我正在尝试将带有WCF服务的Silverlight部署到托管服务器。基本上,我和这个家伙有同样的问题: How to configure WCF services to work through HTTPS without HTTP binding? 除了解决方案对我不起作用。
//编辑:我一直错误地粘贴它,但它仍然不起作用。
我尝试过Ladislav Mrnka的答案 - 在Web.config文件中更改了这个:
<serviceMetadata httpGetEnabled="false" httpsGetEnabled="true" />
当我导航到服务器上的.svc文件时,仍然会出现可怕的错误:
The HttpsGetEnabled property of ServiceMetadataBehavior is set to true and the
HttpsGetUrl property is a relative address, but there is no https base address.
Either supply an https base address or set HttpsGetUrl to an absolute address.
答案 0 :(得分:15)
现在它应该是正确的,我只是改变了httpGetEnabled和 httpsGetEnabled在适当的位置(它已经在配置文件中)。 但我仍然得到错误。我应该指定HttpsGetUrl 某处?在哪里?
是的,请参阅here。
应该是:
<behaviors>
<serviceBehaviors>
<behavior name="NewBehavior">
<serviceMetadata httpsGetEnabled="true"
httpsGetUrl="https://myComputerName/myEndpoint" />
</behavior>
</serviceBehaviors>
</behaviors>
答案 1 :(得分:0)
在配置中,根据您设置httpsGetEnabled =“ true”的行为, 还要设置httpsGetUrl =“ https:// UserSystemName / EndPointName”并解决问题。
<behaviors>
<serviceBehaviors>
<behavior name="mexBehaviour">
<serviceMetadata httpsGetEnabled="true" httpsGetUrl="https:///UserSystemName/EndPointName"/>
</behavior>
</serviceBehaviors>
</behaviors>
答案 2 :(得分:0)
发生此错误是因为设置在逻辑上是错误的。如果启用httpsGetEnabled手段,则允许客户端通过https检索元数据。而且,如果您不提供有关https的URL,则客户端如何从https中检索元数据。因此,错误消息会提醒您提供一个URL。
Either supply an https base address or set HttpsGetUrl to an absolute address.
您有三个选择。
(如果您仍在Visual Studio中进行开发,则只需使用SSL启用模式进行脱胶)
将httpsGetEnabled设置为false