Asp.net永久重定向Body,Path,QueryString,Method

时间:2013-02-22 21:24:05

标签: c# asp.net

在我的场景中。

我想将所有请求重定向到包含Path,QueryStrings,Method,Content

的其他域

实施例 有些用户向我的域发送请求。

POST www.mydomain.com/service?id=5
HEADER { 
token:securityToken
UserAgent: Chrome
Accept: application/json
}
BODY
{
Content lorem ipsum
}

我将检查一些参数并更改标题中的标记。

然后

我想将此请求发送到另一个域。

POST www.anotherdomain.com/service?id=5
HEADER {
token:newsecurityToken
UserAgent: Chrome
Accept: application/json
}
BODY
{
Content lorem ipsum
}

最后

用户将获得另一个域名的回复。可能吗?

服务器:Windows server 2008 .Net Framework:4.0

由于

2 个答案:

答案 0 :(得分:2)

如果您想通过您的域名回复请求,最好的办法是向外部域名提出您自己的请求。我会提供更多有关如何使用的详细信息,但我不知道您正在使用的.net版本。这是一篇概述方法的帖子。

Relaying a request in asp.net (Forwarding a request)

它基本上是指创建一个新的WebRequest,设置相关属性,获取响应,并将响应中的信息发送回用户。

我觉得我不得不问这个问题,你确定你不是想要网络钓鱼吗?第二个想法,没关系。 ;)

更新

由于您不需要它来浏览您的域名,我建议您使用301重定向。这是有人在开始请求中执行此操作的帖子

301 redirect in asp.net 4.0

void Application_BeginRequest(object sender, EventArgs e) 
{
    // Code that runs on every request
    if (HttpContext.Current.Request.Url.ToString().ToLower().Contains("http://website.net"))
    {
        HttpContext.Current.Response.Status = "301 Moved Permanently";
        HttpContext.Current.Response.AddHeader("Location", Request.Url.ToString().ToLower().Replace("http://website.net", "http://www.website.net"));
    }
}

请注意,如果没有任何复杂的逻辑来确定您是否要重定向,那么这篇文章还提供了一种通过web.config中的URL重写来实现的方法。

答案 1 :(得分:0)

只是为了提出一个想法,因为我之前从未见过这种方法,您是否有理由不能使用SOAP Web服务来实现这一目标?

pass values to an object to webservices webmethod C#

他们或多或少是为这类事物创造的,会让你的生活变得更轻松。否则,您可以使用URL参数

Asp.net adding parameter to url string

或者,只需使用POST&适当地获取请求。发布到域名B&有一个监听器等待将解析这些值的POST。我使用网络服务,比他们看起来更容易。