我正在尝试将一些基于WSE3.0的代码移植到WCF。基本上,旧代码具有以下配置:
<microsoft.web.services3>
<diagnostics>
<trace enabled="true" input="InputTrace.webinfo" output="OutputTrace.webinfo" />
</diagnostics>
<tokenIssuer>
<statefulSecurityContextToken enabled="false" />
</tokenIssuer>
</microsoft.web.services3>
通过我的“服务参考”调用同一服务时出现此错误:
请求不包含必需的安全标头
我的绑定看起来像这样:
<basicHttpBinding>
<binding name="LegalUnitGetBinding" closeTimeout="00:01:00" openTimeout="00:01:00"
receiveTimeout="00:10:00" sendTimeout="00:01:00" allowCookies="false"
bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
useDefaultWebProxy="true">
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
maxBytesPerRead="4096" maxNameTableCharCount="16384" />
<security mode="Transport">
</security>
</binding>
</basicHttpBinding>
根据我的理解,我正在调用的服务只需要SSL连接,因为它接收用户名和密码作为请求参数的一部分。
非常感谢任何帮助或建议。
答案 0 :(得分:1)
您必须在客户端传递凭据并在服务器端验证它们,我猜您使用IIS来托管?而不是重复 - 这是一个MVP post,它应该让你指向正确的方向。
可以让您在配置文件中思考的关键更改:
<security mode="TransportWithMessageCredential">
...
</security>