当客户端是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应用程序c#时,webservice如何维护会话?

是的,当你在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,但是对于大多数情况来说,这是一个令人讨厌的,而且确实是一个相当大的杀戮。