2012-06-19 4 views
3

Я пытаюсь получить доступ к сессии asp.net в службе WCF. Я делаю jQuery AJAX звонки из моего приложения asp.net в службу wcf. Я прошел через много вопросов и статей и попробовал все, что они говорили, но все же я не могу получить доступ к сеансу клиента в службе wcf. Когда я пишу DataSet ds = HttpContext.Current.Session["data"] as DataSet;, ds всегда имеет значение null.не удается получить доступ к сеансу asp.net в службе wcf

Что мне здесь не хватает?

Это как моя служба WCF выглядит следующим образом: // Интерфейс

[ServiceContract(SessionMode = SessionMode.Allowed)] 
public interface IMyService 
{ 
    [OperationContract(IsInitiating=true)] 
    [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json, RequestFormat = WebMessageFormat.Json)] 
    string GetData(); 

    [OperationContract] 
    [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json, RequestFormat = WebMessageFormat.Json)] 
    bool SaveData(string data); 
} 

// Служба

[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)] 
[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)] 
public class MyService : IMyService 
{ 
    public string GetData() 
    { 
     return "something"; 

    } 
    public bool SaveData(string data) 
    { 
     DataSet ds = HttpContext.Current.Session["data"] as DataSet; 
     return true; 
    } 

} 

Я создаю набор данных в session_start из Global.asax и положить его в сессии так что я могу использовать его в приложении, если пользовательский сеанс действителен.

protected void Session_Start(object sender, EventArgs e) 
    { 
     DataSet ds = new DataSet(); 

     //Table to hold Product Selection 
     DataTable dt = new DataTable("T1"); 
     dtSSNCertification.Columns.Add("Col1"); 
     ds.Tables.Add(dt); 

     Session.Add("data", ds); 
    } 

Вот как выглядит мой проект ФОС-х web.config bindings как:

<service name="MyService"> 
    <endpoint address="" behaviorConfiguration="JSONPBehaviorConfiguration" 
     binding="customBinding" bindingConfiguration="jsonpBinding" 
     contract="IMyService"> 
    </endpoint> 
    </service> 

<customBinding> 
    <binding name="jsonpBinding" > 
     <jsonpMessageEncoding /> 
     <httpTransport manualAddressing="true"/> 
    </binding> 
    </customBinding> 


    <system.serviceModel> 
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true"/> 
    </system.serviceModel> 

ответ

5

Для использования функций ASP.NET необходимо включить ASP.NET Совместимость с WCF. В вашем web.config установите это:

<system.serviceModel> 
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true"> 
+0

да. Это здесь. – Asdfg

+1

это не работает, потому что я делаю вызов AJAX к моему сервису? – Asdfg

+0

это не сработало! –

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