Asp.net 我可以在使用wsHttpBinding的WCF服务中使用JSON吗?

Asp.net 我可以在使用wsHttpBinding的WCF服务中使用JSON吗?,asp.net,ajax,json,wcf,wcf-binding,Asp.net,Ajax,Json,Wcf,Wcf Binding,我需要使用wsHttpBinding绑定,因为我的服务需要访问HttpContext.Current.Session。我从研究中了解到,这在webHttpBinding中是不可能的。然而,我所有的ajax都是使用JSON编写的,如果我不必重写所有内容的话,我非常希望使用JSON 在我需要使用会话之前,我的服务与webHttpBinding完美配合 或者,是否有办法获得对会话的webHttpBinding访问权 编辑: 和执行: [AspNetCompatibilityRequirements(R

我需要使用wsHttpBinding绑定,因为我的服务需要访问HttpContext.Current.Session。我从研究中了解到,这在webHttpBinding中是不可能的。然而,我所有的ajax都是使用JSON编写的,如果我不必重写所有内容的话,我非常希望使用JSON

在我需要使用会话之前,我的服务与webHttpBinding完美配合

或者,是否有办法获得对会话的webHttpBinding访问权

编辑:

和执行:

[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]
public class LiteService : ILiteService
{
    public void Item_Save(string Name)
    {
        // I can't get access to HttpContext.Current.Session variables here.
    }
}

webHttpbinding是一个无状态绑定,它不使用SOAP。 如果您试图将SessionMode=SessionMode.Required放入,它将在服务启动时抛出一个错误。 如果您想在无状态协议上实现会话,则需要使用cookie手动完成

见:


webHttpbinding是一个无状态绑定,它不使用SOAP。 如果您试图将SessionMode=SessionMode.Required放入,它将在服务启动时抛出一个错误。 如果您想在无状态协议上实现会话,则需要使用cookie手动完成

见:


我有一个使用webHttpBinding实现的WCF服务,可以毫无问题地访问HttpContext.Current.Session。您看到了什么问题?我的所有会话变量都为空。我在页面加载中设置了它们,然后当我调用我的服务时,它们是空的。您是否在服务合约中添加了aspnetCompatibilityMode属性,并在配置中设置了兼容模式以支持会话是的,在我的web.config和[ServiceContract SessionMode=SessionMode.Allowed]我有一个用webHttpBinding实现的WCF服务,可以毫无问题地访问HttpContext.Current.Session。您看到了什么问题?我的所有会话变量都为空。我在页面加载中设置了它们,然后当我调用我的服务时,它们是空的。您是否在服务合同中添加了aspnetCompatibilityMode属性,并在配置中设置了兼容模式以支持会话?是的,在我的web.config中,在我的合同中设置了[ServiceContract SessionMode=SessionMode.Allowed]。我已经准备好了这两个功能。我可以访问HttpContext.Current.Session,但以前存储在其中的任何变量都不存在。这就像是一个不同的会话。好吧,我刚刚确认了它-HttpContext.Current.session.SessionID在我的页面加载到我的服务调用时是不同的。webHttpbinding是一个无状态会话,它不使用SOAP。如果您试图将SessionMode=SessionMode.Required放入,它将在服务启动时抛出一个错误。如果你想在无状态协议上实现会话,你需要用cookies手工完成。我不想这样做,我想使用会话。如果我想实现webHttpBinding,我假设我必须改变我的数据发送到服务的方式,因为它不会与JSON打交道?请参阅,我已经准备好了这两件事。我可以访问HttpContext.Current.Session,但以前存储在其中的任何变量都不存在。这就像是一个不同的会话。好吧,我刚刚确认了它-HttpContext.Current.session.SessionID在我的页面加载到我的服务调用时是不同的。webHttpbinding是一个无状态会话,它不使用SOAP。如果您试图将SessionMode=SessionMode.Required放入,它将在服务启动时抛出一个错误。如果你想在无状态协议上实现会话,你需要用cookies手工完成。我不想这样做,我想使用会话。如果我想实现webHttpBinding,我假设我必须更改数据发送到服务的方式,因为它不会与JSON打交道?请参阅和
[ServiceContract (SessionMode=SessionMode.Allowed)]
public interface ILiteService
{
    [WebInvoke(Method = "POST", ResponseFormat = WebMessageFormat.Json, RequestFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.WrappedRequest)]
    [OperationContract]
    void Item_Save(string Name);
}
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]
public class LiteService : ILiteService
{
    public void Item_Save(string Name)
    {
        // I can't get access to HttpContext.Current.Session variables here.
    }
}