我正在开发一个asp.net Web应用程序。 Response.Redirect抛出异常“在此上下文asp.net中没有响应”。
有两种情况:
CASE1:直接从default.aspx页面使用response.redirect
If(certain Condition) //This runs perfectly fine
{
Session["UserId"] = intUserId;
Session["SessionId"] = intSessionId;
Session["Password"] = strPassword;
Session["IsLoggedIn"] = Global.objOmniFlow.IsLoggedIn;
Session["LastLogin"] = strLastLoginTime;
Response.Redirect(CPCHostURL + QueryString);
}
CASE2:控件从default.aspx.cs到javascript函数从那里到asp处理程序页面然后再次返回到default.aspx.cs之后,response.redirect调用抛出异常:
Session["UserId"] = intUserId;
Session["SessionId"] = intSessionId;
Session["Password"] = strPassword;
Session["IsLoggedIn"] = Global.objOmniFlow.IsLoggedIn;
Session["LastLogin"] = strLastLoginTime;
Response.Redirect(CPCHostURL + QueryString);//Exception here Response is not available in this context asp.net
在default.aspx.cs文件中调用javascript函数,函数是
function abc()
{
var userName = '<%=Session["UserName"]%>';
var cabinetName = '<%=Session["CabinetName"]%>';
var moduleName = '<%=Session["ModuleName"]%>';
var clearingType = '<%=Session["clearingType"]%>';
var caseFlagtwo = '2';
var oldPassword= $("#pwd1").val()
$.ajax({
type: "POST",
url: "LoginHandler1.ashx?userName=" + userName + "&cabinetName=" + cabinetName + "&moduleName=" + moduleName + "&oldPassword=" + encodeURIComponent(oldPassword) + "&caseFlag=" + caseFlagtwo + "&clearingType=" + clearingType,
//data: {serviceIndex:serviceIndex, serviceStatus: serviceStatus, action: action },
// dataType: "json",
success: function (outputString) {
alert(outputString);
},
error: function (outputString) {
// var result = json.name;
}
});
}
收到此信息的ashx文件是:
public void ProcessRequest(HttpContext context)
{
String userName = context.Request["userName"].ToString();
String cabinetName = context.Request["cabinetName"].ToString();
String moduleName = context.Request["moduleName"].ToString();
String caseFlag = context.Request["caseFlag"].ToString();
String clearingType = context.Request["clearingType"].ToString();
context.Response.ContentType = "text/plain";
Default obj = new Default();
obj.ForceLogin(userName, cabinetName, moduleName, clearingType);
}
强制登录是我使用response.redirect的函数。
注意:当我使用
代替Response.Redirect时HttpContext.Current.Response.Redirect(CPCHostURL + QueryString);
然后没有例外,但我没有被重定向到指定的网址,而是控件仍然在我发送响应重定向的同一页面上
注意:CPCHostURL = http://192.168.56.210/CPCHost/
完整网址= http://192.168.56.210/CPCHost/?UserName=admin&Password=admin123&UserIndex=1&SessionId=934425343&Cabinet=maincab&LastLoginAt=2017-01-02 15:03:34&amp; ClearingType = ok
答案 0 :(得分:0)
由于缺少数据,您的问题并不完全清楚,但据我所知,响应重定向应该有效。
我的怀疑是您生成的网址,其格式似乎错误。
如果CPCHostURL = http://192.168.56.210/CPCHost/,那么您之后直接连接查询字符串,这通常可能会导致http://192.168.56.210/CPCHost/?id=232&etc=232无效的网址。
发布您生成的网址,以获得更好的答案。