我正在尝试在我的Web应用程序中托管一个svc服务,我正在尝试使用一个简单的客户端应用程序连接它。
当主机托管在我自己的计算机和解决方案中,并且我在本地运行Web应用程序时,一切正常,这意味着我可以使用add service reference
在我的客户端解决方案http://localhost:6543/Hello.svc
中添加对服务的引用1}}作为地址,当我导航到服务的网址时,它会向我显示服务的信息。
但是当我发布我的网站时,我尝试使用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的新手,我不知道它是什么。任何帮助都会受到赞赏,如果需要,我很乐意发布有关我项目的更多细节。
提前致谢
答案 0 :(得分:0)
您需要运行ServiceModel registration tool
“此命令行工具提供了在单台机器上管理WCF和WF组件注册的功能。在正常情况下,您不需要使用此工具,因为在安装时配置了WCF和WF组件。但是如果您在服务激活时遇到问题,您可以尝试使用此工具注册组件。“