添加服务引用仅适用于本地主机WCF服务

本文关键字:服务 主机 WCF 适用于 引用 添加 | 更新日期: 2023-09-27 18:13:07

我正在尝试在我的web应用程序中托管svc服务,我正在尝试用一个简单的客户端应用程序连接到它。

当主机托管在我自己的计算机和解决方案中,并且我在本地运行web应用程序时,一切工作正常,这意味着我可以在我的客户端解决方案中使用http://localhost:6543/Hello.svc作为地址的add service reference添加对服务的引用,当我导航到服务的url时,它会显示服务的信息。

但是当我发布我的网站时,我尝试使用add service referencehttp://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

添加服务引用仅适用于本地主机WCF服务

您需要运行ServiceModel注册工具

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