2014-07-11 1 views
1

Мой метод в моем веб-службы C#Как webservice поддерживает сеанс, когда клиент является приложением Windows 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); 
} 

Вы можете написать мне, как использовать CookieContainer здесь, если я не использую HttpWebRequest?

Большое спасибо :)

+0

Как вы сами указали, вы можете использовать 'CookieContainer'. В чем проблема? – Luaan

+0

Проблема в том, как использовать запрограммированные !!! –

+0

Это совсем не помогло :) Объясните, в чем ваш вопрос, и покажите соответствующий код. Код, который вы опубликовали, не имеет отношения к проблеме. – Luaan

ответ

0

Для справки по веб-сервису у вас есть свойство CookieContainer, как в HttpWebRequest.

Для ссылки на службе (да, большое именование ...), вы просто разрешить использование куков в службе связывания в вашем app.config:

<system.ServiceModel> 
    <bindings> 
     <basicHttpBinding allowCookies="true"> 
    </bindings> 
</system.ServiceModel> 

Это потому, что ссылки услуг не обязательно связаны к HTTP, а файлы cookie - это функция HTTP.

Если вам нужно справиться с этим во время выполнения, это возможно с помощью OperationContext, но это неприятно и действительно довольно переполняет большинство сценариев.

+0

Большое спасибо: D –

1

Да, вы должны использовать CookieContainer при вызове вашего WebMethod из вашей ОС Windows App.

Объект HttpWebRequest имеет свойство CookieContanier, которое необходимо установить. Просто создайте объект CookieContainer (только один раз за сеанс) и назначьте его всем вашим запросам, которые используют один и тот же сеанс.

В официальных документах для CookieContainer here есть образец. Не забудьте использовать тот же CookieContainer для всех ваших запросов.

Смежные вопросы