wcf(webhttpbinding)通过jquery调用 - 没有填充asp.net会话

时间:2011-08-21 02:31:15

标签: wcf

我对wcf非常陌生,希望有人可以提供帮助。我有一个wcf项目和一个Web应用程序。 Wcf项目作为IIS中的应用程序托管在Web项目中,两者都使用相同的应用程序池。

我已将sessionmode.allowed添加到我的wcf接口,启用了aspnetcompatibilitymode。对于绑定,我将传输设置为安全性,并尝试将allowcookies视为false和true。

当我点击网站并检查会话中的密钥时,大约有5个,但是当它通过jquery调用我的服务并且检查会话中的密钥时没有。似乎每次请求都没有发送cookie。

有没有人经历过类似的行为?

由于

1 个答案:

答案 0 :(得分:0)

我甚至不知道那是可能的,所以我只是建立了自己的测试项目。 会话状态对我来说很好。

如果有帮助,这里是我编写的代码:

using System.ServiceModel;
using System.ServiceModel.Activation;
using System.ServiceModel.Web;
using System.Web;

[ServiceContract(Namespace = "")]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class MyService
{
    [OperationContract]
    [WebGet]
    public string DoWork()
    {
        var httpContext = HttpContext.Current;
        var sessionState = httpContext.Session;

        return (string)sessionState["Foo"]; // This returns "Bar"
                                            // which I set in the Page_Load 
                                            // server method
    }
}

在我的默认页面的加载方法中:

protected void Page_Load(object sender, EventArgs e)
{

    System.Web.SessionState.HttpSessionState sessionState = this.Session;
    sessionState["Foo"] = "Bar";
}

在我的web.config文件中:

  <system.serviceModel>
    <behaviors>
      <endpointBehaviors>
        <behavior name="MyServiceAspNetAjaxBehavior">
          <enableWebScript/>
        </behavior>
      </endpointBehaviors>
    </behaviors>
    <serviceHostingEnvironment 
           aspNetCompatibilityEnabled="true" 
           multipleSiteBindingsEnabled="true"/>
    <services>
      <service name="MyService">
        <endpoint 
              address="" 
              behaviorConfiguration="MyServiceAspNetAjaxBehavior"
              binding="webHttpBinding" 
              contract="MyService"/>
      </service>
    </services>
  </system.serviceModel>