gpt4 book ai didi

c# - 由于 HttpModule 导致 AJAX 中断,如何阻止它发生?

转载 作者:行者123 更新时间:2023-11-30 18:06:24 25 4
gpt4 key购买 nike

在 AJAX 问题上需要一些帮助。

我在使用 AJAX 进行异步处理的 ASPX 页面上有某些控件。

我还有一个用于特定站点的 HttpModule,它拦截并过滤 HttpRequest。

自从安装模块后,AJAX 控件就坏了。这些控件似乎不会从它们的 AJAX Post 返回。附上 HttpModule 代码:

public void Init(HttpApplication context)
{
context.ReleaseRequestState += new EventHandler(InstallResponseFilter);
}

public void Dispose()
{
}

private void InstallResponseFilter(object sender, EventArgs e)
{
HttpResponse response = HttpContext.Current.Response;

if (response.ContentType == "text/html")
{
response.Filter = new MyFilter(response.Filter);
}
}

有什么想法吗?谢谢

最佳答案

大概您的 ajax 响应输出的内容类型为“text/html”?您是否尝试调试以确认是否是这种情况?

如果是这样,您可以将它们切换为其他内容“application/json”或“text/xml”,看看是否可行。这取决于您的应用程序对内容类型属性的其他用途。

如果您的 ajax 响应未使用此内容类型,那么此模块似乎不会引起问题。您应该再次调试以确认到底发生了什么。

您还可以尝试向您的 InstallResponseFilter 方法添加更多条件,例如,我认为来自 jquery 的所有 ajax 请求都有一个特定的 header (x-requested-with),其他框架可能也是如此。如果您可以识别您的 ajax 请求的共同签名,您可以过滤掉响应过滤器。

关于c# - 由于 HttpModule 导致 AJAX 中断,如何阻止它发生?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4932044/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com