WCF客户端cookie在哪里存在?

时间:2012-10-12 14:57:13

标签: asp.net wcf web-services soap

我正在编写SOAP API的包装器。我在VS2010中设置了一个服务引用来指向WSDL。当我调用login时,API会在cookie中返回一个会话变量。

我在配置中的绑定上设置了 allowCookies =“true”

到目前为止,我在我的包装器中实现了两个API调用:登录注销

我的测试工具是一个简单的ASP.NET应用程序,其中包含登录页面和注销页面。

提交登录时:

using (var ApiClient = new ApiClient())
            {
                ApiClient.Login(txtUsername.Text, txtPassword.Text, txtOrganization.Text, txtIPAddress.Text);
            }

现在在我的ApiClient.Login方法中:

using (var soapService = new WSDLInterfaceClient())
            {
                var loginCredentials = new loginRequest
                {
                    username = username,
                    password = password,
                    organization = organization
                };

                if (!string.IsNullOrWhiteSpace(ipAddress))
                    loginCredentials.ipAddress = ipAddress;

                var loginResponse = soapService.Login(loginCredentials);
            }

所以这一切都顺利完成。我以为我需要删除使用并有一个类级别的WSDLInterfaceClient,我将在我的包装器中使用,因为我认为每次构建一个新客户端时cookie都会被删除。但事实并非如此。

注销方法的实现方式类似。如果您在未登录的情况下尝试退出,则注销 API调用将引发异常。奇怪的是,当我转到注销页面时提交(反过来构建一个新的包装器客户端,因此是一个新的服务客户端),它识别出我已登录。如果我再次尝试注销,则会按预期抛出异常。

即使在每个页面上构建新的接口客户端和新的包装器客户端时,cookie似乎都在起作用,但cookie仍然存在。

虽然这不是一件坏事,但我对它是如何工作感到困惑。是否存在ASP.NET / WCF正在为会话保存这些cookie的地方?如何在控制台应用程序中工作?

0 个答案:

没有答案
相关问题