添加服务引用仅适用于本地主机WCF服务
本文关键字:服务 主机 WCF 适用于 引用 添加 | 更新日期: 2023-09-27 18:13:07
我正在尝试在我的web应用程序中托管svc服务,我正在尝试用一个简单的客户端应用程序连接到它。
当主机托管在我自己的计算机和解决方案中,并且我在本地运行web应用程序时,一切工作正常,这意味着我可以在我的客户端解决方案中使用http://localhost:6543/Hello.svc
作为地址的add service reference
添加对服务的引用,当我导航到服务的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)方法不是允许的。远程服务器返回了一个错误:(405)方法不是允许的。如果服务在当前解决方案中定义,请尝试构建解决方案并再次添加服务引用。
,奇怪的是,当我导航到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,我不知道它是什么。如果需要,任何帮助都将不胜感激,我很乐意发布有关我的项目的更多细节。
Thanks in advance
您需要运行ServiceModel注册工具
"这个命令行工具提供了在一台机器上管理WCF和WF组件注册的能力。在正常情况下,您不需要使用此工具,因为WCF和WF组件是在安装时配置的。但是,如果您在服务激活方面遇到问题,您可以尝试使用此工具注册组件。"