【发布时间】: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 文件
标签: c# web-services wcf service http-status-code-405