在此上下文asp.net中无法响应

时间:2017-01-02 08:53:16

标签: c# asp.net session-variables

我正在开发一个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

1 个答案:

答案 0 :(得分:0)

由于缺少数据,您的问题并不完全清楚,但据我所知,响应重定向应该有效。

我的怀疑是您生成的网址,其格式似乎错误。

如果CPCHostURL = http://192.168.56.210/CPCHost/,那么您之后直接连接查询字符串,这通常可能会导致http://192.168.56.210/CPCHost/?id=232&etc=232无效的网址。

发布您生成的网址,以获得更好的答案。