3

WCF サービスで asp.net セッションにアクセスしようとしています。jQuery AJAXasp.net アプリケーションから wcf サービスへの呼び出しを行っています。私は多くのSOの質問と記事を読み、彼らが言ったことをすべて試しましたが、それでもwcfサービスでクライアントセッションにアクセスできません. 私が書くときDataSet ds = HttpContext.Current.Session["data"] as DataSet;ds常にnullです。

ここで何が欠けていますか?

これは私の WCF サービスがどのように見えるかです: //Interface

[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);
    }

これは私のwcfプロジェクトがどのように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>
4

1 に答える 1

5

ASP.NET 機能を使用するには、WCF との ASP.NET 互換性を有効にする必要があります。web.config で次のように設定します。

<system.serviceModel>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true">
于 2012-06-19T17:08:17.883 に答える