添加服务引用仅适用于localhost wcf服务

时间:2015-09-17 15:54:48

标签: c# web-services wcf service http-status-code-405

我正在尝试在我的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的新手,我不知道它是什么。任何帮助都会受到赞赏,如果需要,我很乐意发布有关我项目的更多细节。

提前致谢

1 个答案:

答案 0 :(得分:0)

您需要运行ServiceModel registration tool

“此命令行工具提供了在单台机器上管理WCF和WF组件注册的功能。在正常情况下,您不需要使用此工具,因为在安装时配置了WCF和WF组件。但是如果您在服务激活时遇到问题,您可以尝试使用此工具注册组件。“