C# 如何重写到url

C# 如何重写到url,c#,url-rewriting,C#,Url Rewriting,在IIS url重写中,它可以执行以下操作重写到另一个url: <rule name="Blog" stopProcessing="true"> <match url="(?:^blog|weblog)(?:/)?(.*)" /> <action type="Rewrite" url="http://blog.domain.com/{R:1}" appendQueryString="true" logRewrittenUrl="true" /> <

在IIS url重写中,它可以执行以下操作重写到另一个url:

 <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作为参数会导致“无效的虚拟路径”异常。

似乎您正在寻找代理解决方案:

我不确定它是否被称为重写,但该行为类似于重写url。很简单,只需创建一个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); 
}

似乎只是某种正则表达式的替换?事实上,这就是它目前使用IIS重写配置的方式。但是我只想在代码中做同样的事情,那么我需要如何调用它呢?上面的答案是我将如何做。。。这并不完美,因为您基本上是在复制代理功能。()