3

我正在尝试用 C# 为 Web 服务创建一个客户端,该 Web 服务(我想)是用 Java 编写的。这是我第一次尝试编写客户端,所以我按照 MSDN 上的说明进行操作,但我遇到了添加引用的问题。当我打开“添加服务引用”对话框并添加 URL 时,出现错误:

There was an error downloading 'http://geoportal.cuzk.cz/WCTService/WCTService.svc'.
The request failed with HTTP status 404: Not Found.
Metadata contains a reference that cannot be resolved: 'http://geoportal.cuzk.cz/WCTService/WCTService.svc'.
There was no endpoint listening at http://geoportal.cuzk.cz/WCTService/WCTService.svc that could accept the message. This is often caused by an incorrect address or SOAP action. See InnerException, if present, for more details.
The remote server returned an error: (404) Not Found.
If the service is defined in the current solution, try building the solution and adding the service reference again.

我的下一步应该是什么?我不知道我该怎么办!(这是来自捷克共和国的坐标转换服务。)

更多信息:
物业服务 (GetCapabilities) http://geoportal.cuzk.cz/WCTService/WCTService.svc/get ?

本地化服务: http ://geoportal.cuzk.cz/WCTService/WCTService.svc/get?request=GetCapabilities&service=WCTS

4

7 回答 7

3

我遇到了类似的情况,我创建了一个 WCF 服务 (Employee.svc),后来将名称更改为 EmployeeService.svc。WCF 项目编译得很好,但是当我尝试从 UI 客户端添加服务引用时,我收到以下错误:

Metadata contains a reference that cannot be resolved: 'http://localhost:2278/EmployeeService.svc?wsdl'.
The document format is not recognized (the content type is 'text/html; charset=UTF-8').
Metadata contains a reference that cannot be resolved: 'http://localhost:2278/EmployeeService.svc'.
There was no endpoint listening at 'http://localhost:2278/EmployeeService.svc' that could accept the message. This is often caused by an incorrect address or SOAP action. See InnerException, if present, for more details.
The remote server returned an error: (404) Not Found.
If the service is defined in the current solution, try building the solution and adding the service reference again.

我通过在任何地方替换正确的服务类名称来解决它。就我而言,它应该是 EmployeeService 而不是雇员。遗漏的地方是在 svc 文件的标记代码中:

<%@ ServiceHost Language="C#" Debug="true" Service="WCFServiceHost.**Employee**" CodeBehind="EmployeeService.svc.cs" %>

将其更改为

<%@ ServiceHost Language="C#" Debug="true" Service="WCFServiceHost.**EmployeeService**" CodeBehind="EmployeeService.svc.cs" %>

它又开始工作了!!!更改服务名称后不要忘记构建您的 WCF 项目。

于 2012-06-01T12:52:43.997 回答
2

我尝试浏览到http://geoportal.cuzk.cz/WCTService/WCTService.svc?wsdl. 看起来此服务没有公开元数据。

我在 OpenGIS 上做了一些谷歌搜索,我认为你需要看看这篇文章:

使用 .NET 的 OpenGIS

您将无法仅添加服务引用并继续。看起来您需要制作一个具体的 WSDL。

可能有一个客户端库,您可以使用/自定义来协助集成。查看 Stack Overflow 问题Using MySQL GeoSpatial data types in .NET

于 2012-04-10T10:55:13.230 回答
0

在您尝试添加服务引用之前,该服务是否已确定启动并运行?如果它公开元数据,它是否配置了服务行为或等效行为?您是否正确配置了防火墙?

于 2012-04-10T08:29:13.357 回答
0

在将服务引用添加到客户端应用程序时,元数据无法从服务访问到客户端应用程序。因此远程服务器返回错误:(404)未找到。实际上,我们可以如下托管 WCF 服务:

  1. 自托管(控制台应用程序)
  2. IIS 托管
  3. WAS 托管
  4. 窗口服务托管。

如果您使用自托管,那么您需要在控制台应用程序中托管服务并运行服务(运行控制台应用程序),然后将服务引用添加到客户端应用程序,然后元数据将被交换。如果服务没有运行,那么在向客户端应用程序添加服务引用时,将会出现 404 not found 错误。所有托管类型都将遵循相同的过程。首先运行服务,然后添加服务引用。

于 2016-06-26T05:34:25.263 回答
0

我知道这是一个旧线程并且已经解决,但我刚刚完成了对这个确切问题的故障排除,并且这里提供的解决方案都不适合我。想分享我的解决方案,以防其他人遇到类似问题。

我的整个问题源于一个错误的 Refactor->Rename 操作。我最近为我的开发团队购买了 Resharper,而 Resharper 不喜欢我们的服务实现名称。我们将其命名为“WCFAccess”,而 Resharper 想要命名为“WcfAccess”。我刚刚发布了一个更新,将该版本安全地隔离在 git 中它自己的发布分支中,并认为这是在开发分支上执行重命名并关闭 Resharper 关于命名的好时机。我使用 Refactor->Rename 来更改文件的名称以匹配我们在 Resharper 配置中定义的命名约定。重命名操作完成,解决方案编译并运行,时间过去了,WCF 重命名被遗忘了。

快进几周,是时候将 Web 服务部署到测试环境以进行回归测试了。解决方案编译成功,发布成功,然后给了我 OP 发布的 EXACT 错误。我最终发现,几周前的重命名操作仅将源代码引用更新为旧名称,并没有重命名标记。当我导航到服务发布到的 Web 服务器并双击 .svc 文件时,它在 Visual Studio 中打开了标记,我注意到 CodeBehind="ServiceNameHere.svc.vb" 的字符大小写不一致使用新的命名约定。更新标记和 web.config 文件以引用正确的字符大小写解决了我的问题。

我希望这可以帮助别人。排除故障非常令人沮丧

(请不要因为我使用 VB.Net 而讨厌我,我继承了这个应用程序):-)

于 2018-05-23T15:37:50.737 回答
0

我今天早些时候也遇到了同样的问题。Web 服务在本地主机上运行良好,但由于某种原因,尝试在另一个项目中添加服务引用时出现 400。

我的错误是由在服务的枚举上设置[DataMember]注释而不是注释引起的。[EnumMember]改变它解决了我的问题。

于 2018-08-23T16:19:57.140 回答
-1

网络服务不运行。

如果您无权访问运行此服务的服务器,则会被阻止。

否则,您需要检查服务器是否运行等。由于我不知道Java webservice是如何运行的,我无法进一步帮助您。

于 2012-04-10T08:39:10.793 回答