我一直在谷歌搜索我可能找到的所有地方(包括 Stackoverflow 上的此处)以找出一个错误,我试图在 Windows 7 x64 上将 WCF 服务部署到 IIS 7.5,该服务仅通过 SSL 和基本 HTTP 身份验证运行。我在 IIS 中有一个站点,它绑定到带有自签名证书的 HTTPS 端口 50443。(我不能使用标准端口 443,因为我们计划将它部署到已经运行 Tomcat 的服务器上的 IIS,该服务器正在监听 80 和 443。)
这是 web.config:
<configuration>
<system.web>
<compilation debug="true" targetFramework="4.0" />
</system.web>
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior>
<serviceMetadata httpsGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="false"/>
</behavior>
</serviceBehaviors>
</behaviors>
<bindings>
<basicHttpBinding>
<binding name="SSLBinding">
<security mode="TransportCredentialOnly">
<transport clientCredentialType="Basic"/>
</security>
</binding>
</basicHttpBinding>
</bindings>
<services>
<service name="HelloWorldWcf.HelloWorldWcfService">
<endpoint name="HelloWorldWcf.HelloWorldWcfService"
address="https://mylaptop:50443/HelloWorld/Service1.svc"
binding="basicHttpBinding"
bindingConfiguration="SSLBinding"
contract="HelloWorldWcf.IHelloWorldWcfService"/>
<endpoint address="https://mylaptop:50443/HelloWorld/Service1.svc/mex"
binding="mexHttpsBinding"
contract="IMetadataExchange"/>
</service>
</services>
</system.serviceModel>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>
</configuration>
如果我浏览到服务端点地址并手动输入基本身份验证凭据,我会在浏览器中收到以下异常错误消息:
提供的 URI 方案“https”无效;预期的“http”。
参数名称:context.ListenUriBaseAddress
这与我尝试针对类似服务运行 WCF 客户端时遇到的错误相同,只是它以“参数名称:via”结尾(因为调用堆栈中显示的方法的参数名称为“System.ServiceModel. Channels.TransportChannelFactory`1.ValidateScheme(URI via)”,其实就是“via”)。
我已经调整了服务器和客户端配置文件很多次了,但我已经迷失了方向,但是上面的 web.config 文件是我迄今为止最好的猜测——它甚至不能在浏览器上运行,更不用说 WCF 客户端了.
我需要做什么才能访问托管在非标准 SSL 端口上的 IIS 7.5 中的 WCF 服务,并通过 HTTPS 进行基本 HTTP 身份验证?帮助!(& 谢谢!)