我无法将身份验证 cookie 放入客户端 Windows 服务的 HTTP 请求标头中,该服务使用托管在 IIS 中的 WCF 服务,该服务使用“会话”。客户端应用程序使用表单身份验证来访问 WCF 服务。成功验证后,我捕获 HTTP 响应标头,其中包含 .ASPXAUTH 的 Set-Cookie 和 ASP.NET_SessionId 的 Set-Cookie。我将这些 cookie 添加到对 WCF 服务的所有后续请求的 HTTP 请求标头中。使用 Fiddler 调试工具,我可以看到对于 WCF 服务的每个请求,都会发送两个 HTTP 请求。第一个 HTTP 请求标头不包含 cookie,但第二个 HTTP 请求包含。当我通过将 web.config 的授权部分设置为“拒绝用户=”?”来保护服务时,标头中没有 cookie 的第一个 HTTP 请求会强制“重定向”返回登录,从而阻止访问服务。我认为第一个请求与“会话”的使用有关。当我在 WCF 服务中禁用“会话”时,每次 WCF 调用我只会收到一个 HTTP 请求,并且 cookie 位于标头中。如何在发送到我的 WCF 服务的所有 HTTP 请求标头中获取从身份验证返回的 cookie?对此问题的任何帮助将不胜感激。如何在发送到我的 WCF 服务的所有 HTTP 请求标头中获取从身份验证返回的 cookie?对此问题的任何帮助将不胜感激。如何在发送到我的 WCF 服务的所有 HTTP 请求标头中获取从身份验证返回的 cookie?对此问题的任何帮助将不胜感激。
我已经包含了来自客户端的绑定。
<customBinding>
<binding name="CustomBinding_IMySyncService" receiveTimeout="00:01:00"
sendTimeout="00:01:00">
<reliableSession acknowledgementInterval="00:00:30"
inactivityTimeout="00:03:00"
maxTransferWindowSize="4096" />
<binaryMessageEncoding maxReadPoolSize="2147483647" maxWritePoolSize="2147483647">
<readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647"
maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
</binaryMessageEncoding>
<httpsTransport manualAddressing="false" maxBufferPoolSize="2147483647"
maxReceivedMessageSize="2147483647" allowCookies="false" authenticationScheme="Anonymous"
bypassProxyOnLocal="false" decompressionEnabled="true" hostNameComparisonMode="StrongWildcard"
keepAliveEnabled="true" maxBufferSize="2147483647" proxyAuthenticationScheme="Anonymous"
realm="" transferMode="Buffered" unsafeConnectionNtlmAuthentication="false"
useDefaultWebProxy="true" />
</binding>
<binding name="CustomBinding_AuthenticationService">
<binaryMessageEncoding maxReadPoolSize="64" maxWritePoolSize="16">
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
maxBytesPerRead="4096" maxNameTableCharCount="16384" />
</binaryMessageEncoding>
<httpsTransport manualAddressing="false" maxBufferPoolSize="524288"
maxReceivedMessageSize="65536" allowCookies="false" authenticationScheme="Anonymous"
bypassProxyOnLocal="false" decompressionEnabled="true" hostNameComparisonMode="StrongWildcard"
keepAliveEnabled="true" maxBufferSize="65536" proxyAuthenticationScheme="Anonymous"
realm="" transferMode="Buffered" unsafeConnectionNtlmAuthentication="false"
useDefaultWebProxy="true" />
</binding>
</customBinding>