Response.Redirect() 不会在 Internet Explorer 上重定向

发布于 2024-09-06 04:04:14 字数 360 浏览 4 评论 0原文

我在 page_preInit 事件中使用

Response.Redirect("someurl",true);

来重定向到达页面的所有请求。它在 Firexox 上工作正常,但如果我从 Internet Explorer 7/8 访问该页面,它会说找不到页面并且不会重定向到新 URL。

知道为什么会发生这种情况吗?

更新:

我尝试在重定向中提供随机 URL,例如 google.com,效果很好。实际上,我尝试重定向的 URL 在我的计算机上无法访问,它位于另一个 VPN 上。我猜如果IE无法访问地址栏上的URL,它就不会更改该URL。另一方面,Firefox 会更改地址栏上的地址。

I am using

Response.Redirect("someurl",true);

in the page_preInit event to redirect all the requests that come to a page. It works fine on Firexox, but if i access the page from internet explorer 7/8, it says page can not be found and will not redirect to new URL.

Any idea why this happens??

Update:

I tried giving a radom URL in the redirect such as google.com and it works fine. Actually the URL I am trying to redirect is not accessible on my machine, it is on another VPN. I guess IE will not change the URL on the addressbar if it can not access the URL. Firefox on the other hand changes the address on the address bar.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

夜雨飘雪 2024-09-13 04:04:14

您的 Response.Redirect 是否包含在 try/catch 块中?这可能会导致重定向问题。

Is your Response.Redirect contained within a try/catch block? This can cause issues with Redirection.

一世旳自豪 2024-09-13 04:04:14

正如我在更新中提到的,如果 IE 返回 404,则不会更改 URL。由于我无法访问正在重定向的 URL,因此它返回 404。但 Firefox 的行为不同。

As i mentioned on the Update, IE wont change the URL if it returns 404. Since i had no access to the URL i am redirecting, it was returning a 404. But firefox behaves differently.

街角卖回忆 2024-09-13 04:04:14

我也遇到了类似的问题,Internet Explorer 无法使用标准 Response.Redirect 调用进行重定向。我还在某些 Android 设备上的 WIFI 上看到了同样的问题,但在手机服务上工作正常。很奇怪。

问题出在 .NET 中 Microsoft 的旧版重定向方法。某些网络路由器和较旧的浏览器以不同的方式处理响应代码。以下是修复该问题的 C# 代码更改:

旧代码:

 HttpContext.Current.Response.Redirect("www.mysite.com", true);

新代码:

 WebOperationContext.Current.OutgoingResponse.StatusCode = System.Net.HttpStatusCode.Redirect;
 WebOperationContext.Current.OutgoingResponse.Headers.Add("Location", "www.mysite.com");

I also had a similar issue where Internet Explorer would not redirect using a standard Response.Redirect call. I also saw the same issue on certain Android devices on WIFI, but who worked correctly on cell service. Very strange.

The problem is with Microsoft's legacy redirect method in .NET. Certain network routers and older browsers handle the response codes differently. Here's the change to C# code that fixed it:

OLD CODE:

 HttpContext.Current.Response.Redirect("www.mysite.com", true);

NEW CODE:

 WebOperationContext.Current.OutgoingResponse.StatusCode = System.Net.HttpStatusCode.Redirect;
 WebOperationContext.Current.OutgoingResponse.Headers.Add("Location", "www.mysite.com");
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文