Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# NET如何在路径和查询保持不变的情况下对新域执行HTTP 301_C#_Asp.net_Http_Redirect - Fatal编程技术网

C# NET如何在路径和查询保持不变的情况下对新域执行HTTP 301

C# NET如何在路径和查询保持不变的情况下对新域执行HTTP 301,c#,asp.net,http,redirect,C#,Asp.net,Http,Redirect,如何将所有传入的请求从一个域重定向到另一个域,并且仍然保留路径和查询 范例 从:到: 我一直在web.config、HTTP处理程序和global.asax中摆弄system.webserver,但运气不好。我只得到404(因为内容已被移动) 谢谢 执行重定向时,请使用域1并将其替换为域2 从备注部分: 原始URL被定义为域后面URL的一部分 信息。在URL字符串中 ,原始URL为 /articles/recent.aspx。原始URL包括查询字符串(如果有) 现在 更新: 这: 绝对可以满足你

如何将所有传入的请求从一个域重定向到另一个域,并且仍然保留路径和查询

范例 从:到:

我一直在web.config、HTTP处理程序和global.asax中摆弄system.webserver,但运气不好。我只得到404(因为内容已被移动)

谢谢

执行重定向时,请使用域1并将其替换为域2

从备注部分:

原始URL被定义为域后面URL的一部分 信息。在URL字符串中 ,原始URL为 /articles/recent.aspx。原始URL包括查询字符串(如果有) 现在

更新:

这:


绝对可以满足你的需要。您可能会得到一个
404
错误,但这只是因为Url的路径部分在domain2上不存在(
google.com
,在上面的示例中)。这是你应该能够预测/纠正或根本不用担心的事情。我不知道您的要求是什么。

您可以在IIS中设置重定向,同时跳过加载ASP.NET代码

在IIS for domain1.com的“HTTP重定向”部分,将重定向位置设置为:

http://domain2.com/$S$Q
然后选中“将所有请求重定向到确切目的地(而不是相对目的地)”复选框

所有请求(包括文件夹、文件和查询字符串参数)都将传递到新域

编辑

由于您没有访问IIS的权限,因此可以使用所述的Request.RawUrl方法

为了避免404错误,您可以在重定向之前检查页面是否存在:

string domain2 = "domain2.com" + Request.RawUrl;

try
{
  // *** Establish the request
  HttpWebRequest loHttp = (HttpWebRequest)WebRequest.Create(domain2);

  // *** Set properties
  loHttp.Timeout = 10000;     // 10 secs

  // Retrieve request info headers 
  HttpWebResponse loWebResponse = (HttpWebResponse)loHttp.GetResponse();

  loWebResponse.Close();

  Response.Redirect(domain2);    //Page is valid..redirect to it.
}
catch ( WebException ex )
{
  if ( ex.Status.Message.Contains("404") )    //or check that the StatusCode property is 404 or similar
     Response.Redirect("www.domain2.com"   //Redirect to front page since page doesn't exists

}

@Garkbit:我会尝试应用程序_BeginRequest。是的,我尝试过,但我只得到404,用于旧域中不存在的页面。听起来不错,只是我没有访问IIS管理器的权限(web应用程序正在我的托管提供商上运行)。
string domain2 = "domain2.com" + Request.RawUrl;

try
{
  // *** Establish the request
  HttpWebRequest loHttp = (HttpWebRequest)WebRequest.Create(domain2);

  // *** Set properties
  loHttp.Timeout = 10000;     // 10 secs

  // Retrieve request info headers 
  HttpWebResponse loWebResponse = (HttpWebResponse)loHttp.GetResponse();

  loWebResponse.Close();

  Response.Redirect(domain2);    //Page is valid..redirect to it.
}
catch ( WebException ex )
{
  if ( ex.Status.Message.Contains("404") )    //or check that the StatusCode property is 404 or similar
     Response.Redirect("www.domain2.com"   //Redirect to front page since page doesn't exists

}