C# 尝试添加服务引用时出错

C# 尝试添加服务引用时出错,c#,web-services,webclient,service-reference,C#,Web Services,Webclient,Service Reference,我正在尝试用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. Metadat

我正在尝试用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) ?

本地化服务:

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

Web服务无法运行

如果您无法访问运行此服务的服务器,您将被阻止


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

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

我在OpenGIS上用谷歌搜索了一下,我想你需要看看这篇文章:

您不能只添加一个服务引用就走。看起来您需要构建一个具体的WSDL


您可以使用/自定义客户端库来帮助集成。看看堆栈溢出问题。

我遇到了一个类似的情况,我创建了一个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项目。

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

  • 自托管(控制台应用程序)
  • IIS托管
  • 主持
  • 窗口服务托管

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

    我知道这是一个旧线程,已经解决了,但我刚刚完成了对这个问题的疑难解答,这里提供的解决方案对我都不起作用。希望分享我的解决方案,以防其他人遇到类似问题

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

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

    我希望这对某人有帮助。排除故障令人难以置信地沮丧


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

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


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

    这给了我错误<代码>未找到终结点。您确定服务器上的服务状态正确吗?配置文件中是否定义了此服务的任何端点?“别忘了构建您的WCF项目”谢谢。那句话救了我:))