0

我有一个 wcf 服务,以下是我收到的错误:

ServiceMetadataBehavior 的 HttpsGetEnabled 属性设置为 true,HttpsGetUrl 属性是相对地址,但没有 https 基地址。提供 https 基地址或将 HttpsGetUrl 设置为绝对地址。

我的 web.config 设置如下:

<system.serviceModel>
<services>
  <service name="TBServiceProvider" behaviorConfiguration="ServiceBehaviour">
    <endpoint address="" binding="webHttpBinding"
              contract="ITBServiceProvider" behaviorConfiguration="web">
    </endpoint>
  </service>
</services>
<behaviors>
  <serviceBehaviors>
    <behavior name="ServiceBehaviour">
      <serviceMetadata httpsGetEnabled="false"/>
      <serviceDebug includeExceptionDetailInFaults="false" />
    </behavior>
  </serviceBehaviors>
  <endpointBehaviors>
    <behavior name="web">
      <webHttp/>
    </behavior>
  </endpointBehaviors>
</behaviors>

<serviceHostingEnvironment multipleSiteBindingsEnabled="true" >
  <baseAddressPrefixFilters>
    <add prefix="http://www.xyz.com:8000"/>
  </baseAddressPrefixFilters>
</serviceHostingEnvironment>

上面的设置在本地主机上工作得很好,但是当它上传到服务器时,就会出现上面提到的错误。请让我知道可以做些什么来使服务在托管服务器上运行。

谢谢

4

2 回答 2

0

在 web.config 文件中更新

 <system.serviceModel>
 <behaviors>
  <serviceBehaviors>
    <behavior name="">
      <serviceMetadata httpGetEnabled="true" />
      <serviceDebug includeExceptionDetailInFaults="false" />
    </behavior>
  </serviceBehaviors>
  <endpointBehaviors>
    <behavior name="Web">
      <webHttp/>
    </behavior>
  </endpointBehaviors>
</behaviors>
<bindings>
  <webHttpBinding>
    <binding>
      <security mode="None" />
    </binding>
  </webHttpBinding>
</bindings>
<services>
  <service name="TBSERVICe">
    <endpoint address=""
              binding="webHttpBinding"
              behaviorConfiguration="Web"
              contract="ITBSERVICE" />
  </service>
</services>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
</system.serviceModel>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>

在 TBSERVICE.svc 文件中添加

    Factory="System.ServiceModel.Activation.WebServiceHostFactory"

这些提到的设置非常适合在服务器上托管 Web 服务。我的问题还在于对文件进行任何更改时文件未更新,即托管服务器仍从某些临时存储中接受 .svc 和 web.config 等项目文件。然后总是希望放置在至少 2 台服务器上。

谢谢

于 2013-10-17T05:33:11.877 回答
0

在 IIS 中,不需要基地址前缀。您可以删除此参数。

然后你应该用 httpGetEnabled 替换 httpsGetEnabled。如果您不在 TLS 上公开您的服务,则无需指定 httpsGetEnabled。

最后,您能否在您的服务器和远程计算机上添加显示在 Internet Explorer 中的服务屏幕截图。

于 2013-10-15T07:26:39.657 回答