尝试添加服务引用时出现错误

4

我正在尝试使用C#创建一个客户端,用于连接一个(我猜测是)用Java编写的Web服务。这是我第一次尝试编写客户端,因此我正在按照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

1
这给了我一个错误... Endpoint not found. 你确定服务器上的服务形状正确吗?配置文件中是否定义了此服务的任何端点? - Naveed Butt
7个回答

4

我曾遇到类似的情况,我创建了一个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而不是employee。遗漏的地方在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项目。


1
不要忘记构建你的 WCF 项目。谢谢,那行代码救了我 :)))) - UnuS76

2

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

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

使用.NET的OpenGIS

你不能只添加一个服务引用就可以了。看起来你需要创建一个具体的WSDL。

可能有一个客户端库你可以使用/自定义来协助集成。看看Stack Overflow问题在.NET中使用MySQL GeoSpatial数据类型


1
我知道这是一个旧的线程并且已经被解决了,但我刚刚解决了这个确切的问题,并且这里提供的任何解决方案都没有对我起作用。希望分享我的解决方法,以防其他人遇到类似的问题。
我的整个问题源于错误的重构->重命名操作。最近我为我的开发团队购买了Resharper,而Resharper不喜欢我们的服务实现名称。我们将其命名为“WCFAccess”,而Resharper想要的名称是“WcfAccess”。我刚刚发布了一个更新,在git中将发布安全地隔离在自己的发布分支中,并且认为现在是执行重命名操作以使Resharper满意的好时机。我使用重构->重命名来更改文件的名称,以匹配我们在Resharper配置中定义的命名约定。重命名操作完成后,解决方案编译并运行,时间过去了,WCF重命名被遗忘了。
快进几周,现在是将我们的Web服务部署到测试环境以进行回归测试的时间。解决方案已成功编译、成功发布,但却给我了OP发布的完全相同的错误。我最终发现的是,几周前的重命名操作只更新了旧名称的源代码引用,并没有重命名标记。当我导航到我们发布服务的Web服务器并双击.svc文件时,它打开了Visual Studio中的标记,我注意到CodeBehind="ServiceNameHere.svc.vb"的字符大小写与新的命名约定不一致。更新标记和web.config文件以引用正确的字符大小写解决了我的问题。
希望这可以帮助某些人。这真的很令人沮丧。
(请不要因为我使用VB.Net而讨厌我,我继承了这个应用程序) :-)

0

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

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

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


0

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


0
今天早些时候我遇到了同样的问题。WebService在本地主机上运行良好,但由于某种原因,在尝试在另一个项目中添加服务引用时出现了400错误。
我的错误是由于在服务的枚举上设置了[DataMember]注释而不是[EnumMember]注释造成的。更改后解决了我的问题。

-1

网络服务无法运行。

如果您无法访问此服务所在的服务器,则会被阻止。

否则,您需要检查服务器是否正在运行等。由于我不知道Java Web服务是如何运行的,因此无法为您提供更多帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接