我在服务器上分别部署了三个不同的 WCF 服务,在 IIS 的“默认网站”下有自己的应用程序目录。其中一项服务由我部署,另外两项服务由其他客户端部署。在 IIS 中部署了一个服务器证书,我已将我的服务绑定到该证书。
但是当我尝试访问我的服务表单 https 时,我在弹出窗口中收到此错误:
"地址不匹配。本网站提供的安全证书是针对不同网站的地址颁发的。此问题可能表明试图欺骗您或拦截您发送到服务器的任何数据。 "
我的服务的 web.config 文件如下
<configuration>
<system.web>
<compilation debug="true" targetFramework="4.0" />
<identity impersonate="false" />
</system.web>
<system.serviceModel>
<services>
<service name="WcfApp.Service">
<endpoint address="customer"
binding="basicHttpBinding"
bindingConfiguration="secureHttpBinding"
contract="WCFApp.ICustomerService" />
<endpoint address="order"
binding="basicHttpBinding"
bindingConfiguration="secureHttpBinding"
contract="WcfApp.IOrderService" />
<endpoint address="mex"
binding="mexHttpsBinding"
contract="IMetadataExchange" />
</service>
</services>
<bindings>
<basicHttpBinding>
<binding name="secureHttpBinding">
<security mode="Transport">
<transport clientCredentialType="None"/>
</security>
</binding>
</basicHttpBinding>
</bindings>
<behaviors>
<serviceBehaviors>
<behavior >
<serviceMetadata httpsGetEnabled="True" />
<serviceDebug includeExceptionDetailInFaults="true" />
<serviceThrottling maxConcurrentCalls="21" maxConcurrentSessions="50" />
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
</system.serviceModel>
<system.webServer>
<directoryBrowse enabled="true" />
<validation validateIntegratedModeConfiguration="false" />
</system.webServer>
</configuration>
有趣的是,当我点击以下 URL 时: https ://myserverurl.com/applicationfolder/service.svc?wsdl
为了获得 wsdl,它运行完美并返回 wsdl 描述,但原来的调用不起作用。
为什么我会收到“地址不匹配”?是否需要添加主机基地址?如果是的话,如何以及在何处将其添加到 web.config 中,是否需要将其添加到部署的其他两个 wcf 服务中?端口是否与证书冲突?我是 wcf 新手,请帮我解决这个问题?
我正在使用 .net 4.0、IIS 7.0、Windows Server 2008。
提前致谢。