HttpContext.Current对于$ .ajax

时间:2018-12-05 13:01:56

标签: jquery asp.net ajax webforms

我正在使用$.post$.ajax请求相同的方法,它们产生了非常奇怪的结果。首先,$.post在所有方面都做的很好,但是现在我必须将文件发送到同一端点,因此我从$.post切换到$.ajax,然后从application/json切换到到multipart/form-data

问题1:

我在HttpContext.Current的继承者中使用System.Web.Http.ApiController,这取决于Content-Type请求标头中提供的值。发送HttpContext.Current == nullmultipart/form-data,发送application/json时确定。解决此问题的代码:

if (HttpContext.Current == null)
{
    httpContextWrapper = httpRequest?.Properties["MS_HttpContext"] as HttpContextWrapper;
}
else
{
    httpContextWrapper = new HttpContextWrapper(HttpContext.Current);
}

但是,我需要从此上下文中获取会话状态(我知道,REST拒绝状态,但是我们采用这种方式),这又是另一个问题

问题2:

如果我从HttpRequestMessage.Properties中提取上下文(这意味着我通过$.ajax发出请求),httpContextWrapper.Session为空,那么我可以在请求中看到ASP.NET_SessionId标头。如果我使用$.post发出请求,则HttpContext.Current.Session出现。

问题是:通过$.ajax发出请求有什么问题?为什么不提供HttpContext.Current?我可以使用哪种最佳方法?现在想到的只是将文件转换为十六进制字符串,以便使用$.post

将其发布为JSON

jquery版本为2.2.4

watch

0 个答案:

没有答案