请帮助!!
我完成了以下设置: -
在本地IIS 7上的网站中托管的WCF服务库
使用上述服务在本地IIS 7上的网站上的Silverlight应用程序
我写的解决方案是内联网而不是互联网使用,但我的老板告诉我,它需要超过Https。我正在使用Windows身份验证。
以下是其中一个服务端点的配置文件的一部分(更改为删除公司信息等): -
<services>
<service behaviorConfiguration="stdHttpBehavior" name="WcfServiceLibrary.StaticDataService">
<endpoint address="" binding="basicHttpBinding" bindingConfiguration="windowsHttpBinding"
name="StaticDataService" contract="WcfServiceLibrary.ServiceContracts.IStaticDataService" />
<endpoint address="mex" binding="mexHttpBinding" name="" contract="IMetadataExchange" />
<host>
<baseAddresses>
<add baseAddress="http://localhost/WcfServiceLibrary/StaticDataService/" />
</baseAddresses>
</host>
</service>
<behaviors>
<serviceBehaviors>
<behavior name="stdHttpBehavior">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
<dataContractSerializer maxItemsInObjectGraph="2147483647" />
</behavior>
</serviceBehaviors>
</behaviors>
为了试验Https,我创建了一个“自签名证书”。然后,我将https添加到默认网站绑定,并将两个网站更改为需要SSL,还更改了配置文件中的relvant URI。我设法让这个工作,但现在我想回到标准的Http并在该模式下完成项目,因为它更容易使用。我更改了所有设置(我非常仔细地检查了这些设置)。
现在,如果我尝试在Silverlight项目中下载Service定义,我会收到此错误: -
'无法找到与绑定BasicHttpBinding的端点匹配方案https的基址。注册的基地址方案是[http]。'
如果我在IIS中放回证书和绑定。服务定义似乎下载确定,但是它引用了https URI,因此实际的服务调用都不起作用,因为它们是http地址!
我尝试添加新网站来托管服务,但却遇到了同样的错误。
过去几天我一直试图解决这个问题,但找不到答案。好像有一个隐藏的引用,而不是在我的项目中,因为它继续添加到IIS的新网站。
答案 0 :(得分:2)
看起来很明显,但您将windowsHttpBinding
绑定配置上的安全模式更改为BasicHttpSecurityMode.None
吗?
<bindings>
<basicHttpBinding>
<binding name="windowsHttpBinding">
<security mode="None" />
</binding>
</basicHttpBinding>
</bindings>
相关资源:
答案 1 :(得分:2)
要在基本HTTP绑定下使用SSL over HTTP,您需要切换端点以使用传输级安全性。在您的情况下,您还需要指明客户端凭据类型:
<bindings>
<basicHttpBinding>
<binding name="windowsHttpBinding">
<security mode="Transport">
<transport clientCredentialType="Windows" />
<message />
</security>
</binding>
</basicHttpBinding>
</bindings>