如何重写到网址

时间:2017-03-07 08:47:14

标签: c# url-rewriting

在IIS网址重写时,它可以重写到另一个网址,执行以下操作:

 <rule name="Blog" stopProcessing="true"> 
<match url="(?:^blog|weblog)(?:/)?(.*)" /> 
<action type="Rewrite" url="http://blog.domain.com/{R:1}" appendQueryString="true" logRewrittenUrl="true" /> 
</rule>

因此,当调用url domain.com/blog时,url会重新写入blog.domain.com(但浏览器中的url保持不变)。

我如何在C#代码中完成相同的工作?

我有HttpContext,但后来我只能重定向。有一个RewritePath方法,但给出一个url作为参数会产生一个&#34;而不是一个有效的虚拟路径&#34;异常。

2 个答案:

答案 0 :(得分:1)

我不确定它是否被称为重写但行为就像重写网址一样。简单,只需创建一个webrequest,获取webrequest的响应,并将结果作为html返回到网页。

如果您使用的是ASP.Net MVC,这可能会有所帮助,

public virtual ActionResult RealUrl()
        {
          var request = WebRequest.Create("http://rewriteUrl.com/blahblah");
        // If required by the server, set the credentials.
        request.Credentials = CredentialCache.DefaultCredentials;
        // Get the response.
        var response = (HttpWebResponse)request.GetResponse();
        // Display the status.
        // Get the stream containing content returned by the server.
        var dataStream = response.GetResponseStream();
        // Open the stream using a StreamReader for easy access.
        if (dataStream == null) return null;
        var reader = new StreamReader(dataStream);
        // Read the content.
        var responseFromServer = reader.ReadToEnd();

        reader.Close();
        dataStream.Close();
        response.Close();
        return Content(responseFromServer); 
}

答案 1 :(得分:0)