添加服务引用仅适用于 localhost wcf 服务
Posted
技术标签:
【中文标题】添加服务引用仅适用于 localhost wcf 服务【英文标题】:add service reference only works with localhost wcf service 【发布时间】:2015-12-14 14:07:31 【问题描述】:我正在尝试在我的 Web 应用程序中托管一个 svc 服务,并且我正在尝试使用一个简单的客户端应用程序连接到它。
当主机托管在我自己的计算机和解决方案中,并且我在本地运行 Web 应用程序时,一切正常,这意味着我可以在我的客户端解决方案中使用 add service reference
添加对服务的引用,http://localhost:6543/Hello.svc
为地址,当我导航到服务的 url 时,它会向我显示服务的信息。
但是当我发布我的网站时,我尝试使用add service reference
以http://myserver.com/Hello.svc
作为地址添加对我的服务的引用,我收到错误消息:
下载时出错 'http://myserver.com/Hello.svc/_vti_bin/ListData.svc/$元数据'。这 请求失败,HTTP 状态 404:未找到。元数据包含一个 无法解析的引用:'http://myserverc.com/Hello.svc'。 远程服务器返回意外响应:(405) Method Not 允许。远程服务器返回错误:(405) Method Not 允许。如果在当前解决方案中定义了服务,请尝试 构建解决方案并再次添加服务引用。
奇怪的是,当我导航到 myserver.com/Hello.svc
时,浏览器开始下载 Hello.svc
文件,而不是显示服务的详细信息和信息。
这是我网站的web.config
文件:
<system.serviceModel>
<bindings>
<webHttpBinding>
<binding name="crossDomain" crossDomainScriptAccessEnabled="true" />
</webHttpBinding>
</bindings>
<behaviors>
<serviceBehaviors>
<behavior name="WithDebug">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
<services>
<service name="HelloWorldService.HelloService" behaviorConfiguration="WithDebug">
<host>
<baseAddresses>
<add baseAddress="http://myserver/Hello.svc"/>
</baseAddresses>
</host>
<endpoint
address=""
binding="webHttpBinding" bindingConfiguration="crossDomain"
contract="HelloWorldService.IHelloWorld" />
<endpoint
address="mex"
binding="mexHttpBinding"
contract="IMetadataExchange" />
</service>
</services>
</system.serviceModel>
我想我在这里遗漏了一些重要的东西,但由于我是 WCF 的新手,所以我不知道它是什么。任何帮助将不胜感激,如果需要,我非常乐意发布有关我的项目的更多详细信息。
提前致谢
【问题讨论】:
您使用的是哪个版本的 Windows Server?您是否在同一台服务器上运行其他 Wcf 应用程序? 我正在使用运行 windows server 2008 和 .net 4.0 版的主机服务器。不,这是我尝试在此服务器上运行的第一个服务。可能是服务器没有不支持 WCF? 可能您的服务器没有安装框架/wcf 激活。您会看到此链接以证明您的服务器正常:blogs.msdn.com/b/blambert/archive/2009/02/13/enable-iis.aspx 如果页面打开,您也可以在服务器上进行本地测试。在 IIS 管理器上尝试浏览 Hello.svc 文件 【参考方案1】:你需要运行ServiceModel registration tool
"这个命令行工具提供了在单机上管理WCF和WF组件注册的能力。一般情况下你不需要使用这个工具,因为WCF和WF组件在安装的时候就已经配置好了。但是如果你遇到服务激活问题,您可以尝试使用此工具注册组件。”
【讨论】:
以上是关于添加服务引用仅适用于 localhost wcf 服务的主要内容,如果未能解决你的问题,请参考以下文章