3

我正在尝试使用 Visual Studio 2012 Express 连接到 C# 中的 asmx Web 服务。

文档说要为 Web 服务分配一个 cookiecontainer,如下所示:

using System.Web.Services.Protocols;    /// using appropriate references
using System.Net;
using System.Net.Http;

//   Create an instance of the Web Service and assign in
//   a cookiecontainer to preserve the validated session

ServiceRef.WSClient wsClient = new ServiceRef.WSClient();

CookieContainer cookieJar = new CookieContainer();
wsClient.CookieContainer = cookieJar;

但是,这会导致错误:

'WebServiceTest.ServiceRef.WSClient' does not contain a definition 
for 'CookieContainer' and no extension method 'CookieContainer' 
accepting a first argument of type 'WebServiceTest.ServiceRef.WSClient' 
could be found (are you missing a using directive or an assembly 
reference?)

我尝试将“allowCookies”添加到 app.config。这似乎不起作用;调用需要登录(设置 cookie)的 ws 方法失败。失败意味着我收到一条关于他们返回的 xml 问题的消息(他们可能返回了一些非 xml 错误)。

我对 C#、基于 SOAP 的 Web 服务和 Visual Studio 完全陌生,但我见过许多使用与我的代码完全一样的代码示例。例如:

http://msdn.microsoft.com/en-us/library/system.web.services.protocols.httpwebclientprotocol.cookiecontainer.aspx

http://megakemp.com/2009/02/06/managing-shared-cookies-in-wcf/

4

1 回答 1

2

您似乎正在使用WCF service reference不包含CookieContainer属性的客户端。

您引用的帖子实际上包含在客户端处理 cookie 的方法WCF service reference,最简单的是allowCookiesconfig 属性,它将自动传递在先前响应中收到的 cookie。

如果您想使用旧类型的客户端(Web Reference具有该CookieContainer属性的客户端),您可以按照这篇文章进行操作。

于 2013-06-23T19:34:24.967 回答