单击“提交”按钮上的Response.Redirect后,无法显示“获取页面”错误

时间:2014-11-27 11:58:10

标签: asp.net webforms response.redirect

我在asp.net网页表单上遇到了一个奇怪的错误。我有一个具有完整功能的遗留页面。它在页面上有几个数据控件。单击提交按钮后执行所需操作后,Internet Explorer将变为空白。它表示页面无法显示。

我的代码足够老,所以它实际上适用于少数生产网站。但最近我部署在一个新的生产网站上。如果我使用内部URL浏览同一页面并执行相同的操作,它不会显示任何错误消息,一切顺利。

为了给出问题的背景,当我点击提交按钮时,它会在后端调用Web服务并返回Web服务结果。一旦它返回结果,它就会将response.redirect()用于同一页面(通过创建url - Request.Url.AbsolutePath)以及querystring中的一些附加参数。如果我刷新页面,那么它会正确显示相同的页面。

IE中的页面 - enter image description here 铬页面 - enter image description here

2 个答案:

答案 0 :(得分:1)

问题不在代码中,但正如我在生产设置配置中所预期的那样。在生产配置中,像www.test.com这样的公共URL被重定向到www.test.com:7500。因此,当用户请求网站URL时,它被重定向到托管应用程序的7500端口。它工作得很好,在asp.net代码中执行response.redirect。当在ASP.NET中执行response.redirect时,在Request.Url.AbsolutePath服务器中获取URL为www.test.com:7500。所以它试图将其重定向到7500.但是这个重定向是在公共URL处设置的。当它在内部试图做同样的事情时,它无法正常工作。

我采用快速修复方法来解决此问题。我删除了公共URL上的请求重定向,并在端口80上设置了我的站点。这解决了我的问题。

答案 1 :(得分:0)

没有看到代码,它可能是很多东西。

但是作为一种猜测,我认为可能会有一些网址重写,然后当网页发回其自身时,它不会回发到重写页面而是发布到下划线页面。

您可以尝试将表单操作设置为后面代码中的重写页面。

form.action = "myrewrittenurl.com/path";

您也可以尝试将表单操作设置为

<form action='#'

哪些可以与某些重写器一起使用。