C# 如何重写到url
在IIS url重写中,它可以执行以下操作重写到另一个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" /> <
<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重写配置的方式。但是我只想在代码中做同样的事情,那么我需要如何调用它呢?上面的答案是我将如何做。。。这并不完美,因为您基本上是在复制代理功能。()