当客户端是windows应用程序c#时,webservice如何维护会话?
本文关键字:何维护 维护 会话 webservice windows 客户端 应用程序 | 更新日期: 2023-09-27 18:12:22
我的方法在我的web服务c#
[WebMethod(EnableSession=true)]
public string HelloWorld()
{
int? Count = (int?)Session["Count"];
if(Count == null)
{
Count = 0;
}
Count++;
Session["Count"] = Count;
return "Hello World - Call Number : " + Count.ToString();
}
我的窗口应用程序客户端:
using WindowsFormsApplicationName.ServiceReference;
// ...
private NameServiceSoapClient WS = new NameServiceDataSoapClient();
//...
private void btnTest_Click(object sender, EventArgs e)
{
// Can you write me how to use CookieContainer here ?
string DataPOST = WS.HelloWorld();
MessageBox.Show(DataPOST);
}
如果我不使用HttpWebrequest,你能告诉我如何使用CookieContainer吗?
是的,当你在Windows应用程序中调用你的WebMethod时,你需要使用CookieContainer。
HttpWebRequest对象有一个你需要设置的CookieContanier属性。只需创建一个CookieContainer对象(每个会话只创建一次),并将其分配给共享同一会话的所有请求。
CookieContainer的官方文档中有一个示例。只要记住对所有请求使用相同的CookieContainer。
对于web服务引用,您有一个CookieContainer
属性,就像HttpWebRequest
一样。
对于服务引用(是的,很棒的命名…),您只需允许在app.config
中的服务绑定中使用cookie:
<system.ServiceModel>
<bindings>
<basicHttpBinding allowCookies="true">
</bindings>
</system.ServiceModel>
这是因为服务引用不一定与HTTP绑定,而cookie是HTTP的一个特性。
如果你需要在运行时处理这个问题,可以使用OperationContext
,但是对于大多数情况来说,这是一个令人讨厌的,而且确实是一个相当大的杀戮。