将WSDL提供给许多服务-如何绕过身份验证

本文关键字:何绕过 身份验证 服务 许多 WSDL | 更新日期: 2023-09-27 18:19:41

我在VS2010C#项目中引用了两个web服务。其中一个服务负责身份验证,另一个负责获取数据。(我也可以使用WSDL生成类,但web引用似乎是等效的)。

我使用服务1进行身份验证,但如何告诉其他服务我已通过身份验证?我在Fiddler中看到了一个由服务1生成的cookie,但我不知道如何使用它,因为我没有使用任何基本的Http类。

将WSDL提供给许多服务-如何绕过身份验证

啊哈,我现在看到答案了。我的每个WSDL生成的对象都有一个CookieCollection,我可以在身份验证调用后从service1读取它。然后我可以为第二个服务设置cookie,如下所示:

response = service1.Authenticate();
CookieCollection allCookies= service1.CookieContainer.GetCookies(uri);
foreach (Cookie c in allCookies)
{
  service2.CookieContainer.SetCookies(_uri,c.Name + "=" +  c.Value);
}
service2.CallMyMethod();

这似乎就是它的要点。