C# 处理程序的context.Response.Redirect无效

C# 处理程序的context.Response.Redirect无效,c#,handler,httpcontext,response.redirect,C#,Handler,Httpcontext,Response.redirect,我正在努力做到以下几点: -通过JQuery调用处理程序上的函数, -处理完成后,重定向到页面 问题是页面似乎没有加载 为了更清晰,我编写了以下代码 <%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication3._Default" %> <a

我正在努力做到以下几点: -通过JQuery调用处理程序上的函数, -处理完成后,重定向到页面

问题是页面似乎没有加载

为了更清晰,我编写了以下代码

<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"
CodeBehind="Default.aspx.cs" Inherits="WebApplication3._Default" %>

<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
<script type="text/javascript" src="js/jquery-ui.js"></script>
<script type="text/javascript" src="js/jquery.js""></script>
</asp:Content>
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
  <script type="text/javascript" language="javascript">
function CallHandler() {
      console.info("Entering CallHandler");
      $.ajax({
          type: 'POST',
          url: "Handlers/MyFunction.ashx",
          data: { helloworld: 'hello world'},
          success: function (data) {
              console.info(data);
              }
          });
      }

    </script>
<asp:HyperLink runat="server" ID="linkForTest" onclick='CallHandler();' Text='Click Me'     />            
</asp:Content>

它在循环

它是否会在页面上显示其重定向目标时重定向

在重定向前,您可能需要检查context.Request.Url,它正在循环

它是否会在页面上显示其重定向目标时重定向


在重定向之前,您可能需要检查context.Request.Url,然后才能传递处理程序
helloworld
,并将其读取为
helloworld
,查看这是否为空引用错误?另外,在$.ajax调用上使用一个错误处理程序,并查看它是否被抛出

  console.info("Entering CallHandler");
  $.ajax({
      type: 'POST',
      url: "Handlers/MyFunction.ashx",
      data: { HelloWorld: 'hello world'},
      success: function (data) {
          console.info(data);
          },
      error: function (data) {
          console.error(data);
          }
      });
  }

您正在传递处理程序
helloworld
,并将其读取为
helloworld
查看这是否为空引用错误?另外,在$.ajax调用上使用一个错误处理程序,并查看它是否被抛出

  console.info("Entering CallHandler");
  $.ajax({
      type: 'POST',
      url: "Handlers/MyFunction.ashx",
      data: { HelloWorld: 'hello world'},
      success: function (data) {
          console.info(data);
          },
      error: function (data) {
          console.error(data);
          }
      });
  }

我很确定响应ajax请求的重定向不会重定向主机页面。有几种方法可以解决这个问题。一种方法是,您可以执行客户端重定向,以响应来自处理程序的某种通知或状态代码

我很确定响应ajax请求的重定向不会重定向主机页。有几种方法可以解决这个问题。一种方法是,您可以执行客户端重定向,以响应来自处理程序的某种通知或状态代码

重定向时,要重定向的页面内容将作为ajax结果传递

重定向时,要重定向的页面内容将作为ajax结果传递

您可以通过使用javascript的客户端调用调用response.redirect另一种方法

console.info(“进入CallHandler”);
$.ajax({
键入:“POST”,
url:“Handlers/MyFunction.ashx”,
数据:{HelloWorld:'HelloWorld'},
成功:功能(数据){
window.location.href=“WebForm1.aspx”;
},
错误:函数(数据){
控制台错误(数据);
}
});

}
您可以通过使用javascript的客户端调用调用response.redirect另一种方法

console.info(“进入CallHandler”);
$.ajax({
键入:“POST”,
url:“Handlers/MyFunction.ashx”,
数据:{HelloWorld:'HelloWorld'},
成功:功能(数据){
window.location.href=“WebForm1.aspx”;
},
错误:函数(数据){
控制台错误(数据);
}
});


}
它的循环是。请求的Url是正确的。一位同事告诉我,问题是因为我试图从处理程序重定向页面,而不是从调用页面重定向。因此,如果您已经在要重定向到的页面上,请不要在(!request.Url.EndsWith(“Login/WebForm1.aspx”))context.Response.redirect(~/Login/WebForm1.aspx”);我不在这一页。实际上我在页面上:“~/Default/Default.aspx”,我想转到“~/Login/Login.aspx”。它的循环是的。请求的Url是正确的。一位同事告诉我,问题是因为我试图从处理程序重定向页面,而不是从调用页面重定向。因此,如果您已经在要重定向到的页面上,请不要在(!request.Url.EndsWith(“Login/WebForm1.aspx”))context.Response.redirect(~/Login/WebForm1.aspx”);我不在这一页。实际上我在页面上:“~/Default/Default.aspx”,我想转到“~/Login/Login.aspx”。没有空引用。应用程序永远不会通过console.info,成功或错误。。。因为重定向,我想…我不太明白写“Hello World”然后重定向请求的目的,你是想将用户重定向到登录页面吗?如果是这样,那么您应该以“unauthorized”和可能的登录位置作为响应,然后设置javascript
location.href
。如果您试图将登录表单动态加载到div或其他内容中,则可以尝试
Server.Transfer
而不是
Response.Redirect
Hello world只是我的代码示例。一种写的方式我传输数据没有任何问题。在现实中,我的页面正在做什么,它是通过Facebook帐户注册用户,一旦注册登录,它实际上是重定向到一个默认页面,如果你不是会员,你就无法访问该页面。但我想要一个简单的例子,这就是我为什么写这个例子。我会完全按照你说的做,希望有更好的解决方案。。。但是谢谢你的帮助。没有空引用。应用程序永远不会通过console.info,成功或错误。。。因为重定向,我想…我不太明白写“Hello World”然后重定向请求的目的,你是想将用户重定向到登录页面吗?如果是这样,那么您应该以“unauthorized”和可能的登录位置作为响应,然后设置javascript
location.href
。如果您试图将登录表单动态加载到div或其他内容中,则可以尝试
Server.Transfer
而不是
Response.Redirect
Hello world只是我的代码示例。一种写的方式我传输数据没有任何问题。在现实中,我的页面正在做什么,它是通过Facebook帐户注册用户,一旦注册登录,它实际上是重定向到一个默认页面,如果你不是会员,你就无法访问该页面。但我想要一个简单的例子,这就是我为什么写这个例子。我会完全按照你说的做,希望有更好的解决方案。。。不过,感谢您的帮助。目前我找到的解决方案(我想还有更好的方法)是返回一个值(通过Json),Javascript页面会检查该值,并将其重定向到正确的页面(~/Login/Login.aspx)。是我