我知道过去这个问题已经有了答案,但经历了很多问题之后我仍然遇到问题,所以我希望有人可以看看这个配置并告诉我它的去向错了...
以下是我正在部署的自托管其他WCF服务的配置:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="aspnet:UseTaskFriendlySynchronizationContext" value="true" />
</appSettings>
<system.web>
<customErrors mode="Off"/>
<compilation debug="true" />
</system.web>
<system.serviceModel>
<services>
<service name="SampleService.SampleService" behaviorConfiguration="ServiceBehavior" >
<endpoint address="" binding="webHttpBinding" bindingConfiguration="webHttpTransportSecurity" behaviorConfiguration="web" contract="SampleService.ISampleService"/>
<endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange"/>
</service>
</services>
<bindings>
<webHttpBinding>
<binding name="webHttpTransportSecurity">
<security mode="Transport" >
<transport clientCredentialType="None" proxyCredentialType="None" />
</security>
</binding>
</webHttpBinding>
</bindings>
<behaviors>
<endpointBehaviors>
<behavior name="web">
<webHttp />
</behavior>
</endpointBehaviors>
<serviceBehaviors>
<behavior name="ServiceBehavior">
<serviceMetadata httpsGetEnabled="true" httpGetEnabled="false"/>
<serviceDebug includeExceptionDetailInFaults="false"/>
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true"/>
</system.serviceModel>
</configuration>
服务器上的错误表明服务想要使用http而不是https,我不能在生活中找出配置有什么问题。我已经过了一天中的大部分时间。这是一项相对简单的小服务。
答案 0 :(得分:1)
服务元素中的服务端点地址是 relative ,这意味着它们相对于服务的基地。默认情况下,基本地址使用 http 方案,这是您的服务正在使用的方案。 因此,如果您的基地址为http://localhost/myservice,则您的两个端点将为http://localhost/myservice和http://localhost/myservice/mex。
您可以通过包含方案(https)和完整的Uri来使您的端点地址绝对。例如,“https://localhost/myservice”和“https://localhost/myservice/mex”代替“”和“mex”就像现在一样。
或者,您只需为使用 https 方案的服务添加基地址即可。
<host>
<baseAddresses>
<add baseAddress="https://localhost/myservice"/>
</baseAddresses>
</host>
这假设您已注意注册SSL证书以支持传输安全性。如果你还没有,那么你也需要这样做。
作为旁注,我建议将 ASP.NET Web API 用于RESTful Web服务而不是WCF。 Here is a brief intro如果您不熟悉它,可以帮助您入门。
答案 1 :(得分:0)
对不起浪费的带宽,感谢所有试图帮助我的人。