我有一个在Windows 2003中的IIS6上运行的站点,以及XP中的开发环境。一切正常。
我被迫在Windows 7中创建一个新的开发环境。
自从使用此功能后,我发现Reponse.Redirect在某些情况下不再有效!
我有以下代码:
Response.Redirect(Globals.NavigateURL( PortalSettings.ActiveTab.TabID ));
它在IIS6上运行良好。
它在IIS7.5上的大部分站点中也能正常工作。但是在某些页面中,它不是。
我查看了返回的标头,并且可以看到Request标头中有一个GET响应,它也适用于它应该重定向的正确页面,但它不是!
用于触发此重定向的按钮周围有一个RadAjaxPanel,但是在父控件中。不工作的按钮位于单独的ascx控件中。
我在Web.Config中有以下内容,我从其他类似的帖子中找到了:
<system.webServer>
<modules>
<add name="ScriptModule" preCondition="integratedMode" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
并且
<httpModules>
<add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
(两者都有结束标签)
但这没有帮助。
任何人都可以考虑尝试让这些工作起作用吗?
答案 0 :(得分:0)
你试过吗
Response.Redirect(Globals.NavigateURL( PortalSettings.ActiveTab.TabID ), false);
答案 1 :(得分:0)
这不是完美的解决方案,而是一种解决方法 -
private void Redirect(string url)
{
// Define the name and type of the client script on the page.
String csName = "RedirectScript";
Type csType = this.GetType();
// Get a ClientScriptManager reference from the Page class.
ClientScriptManager cs = Page.ClientScript;
// Check to see if the client script is already registered.
if (!cs.IsClientScriptBlockRegistered(csType, csName))
{
StringBuilder csText = new StringBuilder();
csText.Append("<script type=\"text/javascript\"> ");
csText.Append("window.location.href = {0} </", url);
csText.Append("script>");
cs.RegisterClientScriptBlock(csType, csName, csText.ToString());
}
}
从页面调用 -
Redirect(Globals.NavigateURL( PortalSettings.ActiveTab.TabID ));
这将使用JavaScript让您的页面重定向。 您可以在公共实用程序类中移动上述方法。