C# WCF数据服务客户端使用会话连接
我的asp.net网站上有一个WCF数据服务,看起来像:C# WCF数据服务客户端使用会话连接,c#,session,wcf-data-services,C#,Session,Wcf Data Services,我的asp.net网站上有一个WCF数据服务,看起来像: public class WcfDataService : DataService<MyEntities> { // This method is called only once to initialize service-wide policies. public static void InitializeService(DataServiceConfiguration config) {
public class WcfDataService : DataService<MyEntities>
{
// This method is called only once to initialize service-wide policies.
public static void InitializeService(DataServiceConfiguration config)
{
config.SetEntitySetAccessRule("*", EntitySetRights.All);
config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V3;
}
protected override Data.Sub.TcSubEntities CreateDataSource()
{
// if user is logged in enable him to query database otherwise do not
if (HttpContext.Current.Session["user"] != null)
{
return base.CreateDataSource();
}
else
{
return null;
}
}
}
我使用以便能够访问我网站上的页面如何使用该网络客户端连接到我的wcf数据服务,以便使用相同的会话?
PS
如果我有会话id,我可以将其作为参数通过url传递吗?最终找到了解决方案。我管理如何向请求添加cookies。关于客户,我做了: 注意:我使用的是cookie感知网络客户端,来自:
如果我没记错的话,如果你的会话设置为不使用cookies,你可以通过url传递它。否则,您必须将会话id放入cookie中,并通过标头将其添加到请求中以传递会话id。
var db = new ServiceReference.MyEntities(new Uri("MyDomain/WcfDataService.svc"));
var customers = db.Customers.ToList();
var cookieAwareWebClient= //.... authenticate
var db = new ServiceReference.MyEntities(new Uri("MyDomain/WcfDataService.svc"));
db.SendingRequest += ( s, arg) =>
{
HttpWebRequest httpRequest = arg.Request as HttpWebRequest;
httpRequest.CookieContainer = cookieAwareWebClient.CookieContainer; // I made that property public
};
var myUsers = db.Users.ToList();