在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;异常。
答案 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)