我创建了一个 WCF Web 服务并将其托管在 IIS 上。web.config 看起来像这样:
[...]
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="[Namespace].[ServiceNameBehavior]">
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="true"/>
</behavior>
</serviceBehaviors>
</behaviors>
<services>
<service name="[Namespace].[ServiceName]" behaviorConfiguration="[NameSpace].[ServiceNameBehavior]" >
<endpoint address="basic" binding="basicHttpBinding" contract="[Namespace].[IService]" />
<endpoint address="secure" binding="basicHttpsBinding" contract="[Namespace].[IService]" />
</service>
</services>
</system.serviceModel>
[...]
当我访问时,http://localhost/[Namespace]/[ServiceName].svc
我会看到通常的 Web 服务网页,表明您已经创建了一个服务,并且要测试它,您应该使用 svcutil.exe 等调用该服务......
现在..问题是,正如在 web.config 中定义的那样,我想为此 Web 服务使用两种类型的连接(实际上只是限制对这两种连接的访问,因此禁用默认.svc
调用)但是当我去 http://localhost/[Namespace]/[ServiceName].svc/basic
或者https://localhost/[Namespace]/[ServiceName].svc/secure
我得到一个空白页面,也无法从本地托管的 PHP 页面访问服务。
这些绑定的行为这样正常吗?如果没有,我该如何解决?
更新 1
我还注意到,尝试从 Visual Studio 创建对这些端点中的任何一个的引用会导致以下错误:
下载“https://localhost/[Namespace]/[ServiceName].svc/secure”时出错。请求失败,HTTP 状态为 400:错误请求。元数据包含无法解析的引用:“https://localhost/[Namespace]/[ServiceName].svc/secure”。内容类型应用程序/soap+xml;服务 https://localhost/[Namespace]/[ServiceName].svc/secure 不支持 charset=utf-8。客户端和服务绑定可能不匹配。远程服务器返回错误:(415)无法处理消息,因为内容类型'application/soap+xml; charset=utf-8' 不是预期的类型 'text/xml; charset=utf-8'.. 如果在当前解决方案中定义了服务,请尝试构建解决方案并再次添加服务引用。
添加对 http://localhost/[Namespace]/[ServiceName].svc 的引用效果很好。