我甚至不知道這是可能的,所以我只設置了我自己的測試項目。 會話狀態對我來說工作得很好。
如果有幫助,這裏是我寫的代碼工作:
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>
這可能是在不同域中託管的WCF和ASP.Net應用程序的問題。你有沒有這樣做? – Chandermani