就回答了這個在單獨的線程,但我會重新發布
我選擇在應用層面做到這一點,而不是IIS。這裏有一個我寫的快速操作過濾器來完成這個操作。只需將該類添加到項目的某個位置,然後就可以將[RequiresWwww]添加到單個操作或整個控制器中。
public class RequiresWww : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
HttpRequestBase req = filterContext.HttpContext.Request;
HttpResponseBase res = filterContext.HttpContext.Response;
//IsLocal and IsLoopback i'm not too sure on the differences here, but I have both to eliminate local dev conditions.
if (!req.IsLocal && !req.Url.Host.StartsWith("www") && !req.Url.IsLoopback)
{
var builder = new UriBuilder(req.Url)
{
Host = "www." + req.Url.Host
};
res.Redirect(builder.Uri.ToString());
}
base.OnActionExecuting(filterContext);
}
}
然後
[RequiresWwww]
public ActionResult AGreatAction()
{
...
}
或
[RequiresWwww]
public class HomeController : BaseAppController
{
..
..
}
希望幫助別人。乾杯!
我認爲這是更多的IIS問題。你應該添加標籤來吸引IIS的注意力 – 2009-09-25 12:11:16
你爲什麼要這麼做? – SLaks 2009-09-25 12:13:33
我不會將此文件作爲答案,因爲這會要求您更改開發堆棧。但這裏是我如何使用Apache解決了我的博客的這個同樣的問題:http://pastie.org/630298。唯一的區別是我預先登記了博客而不是www。還請注意,在我的情況下,同一臺服務器的答案都是域名(不知道這是你的情況)。 – 2009-09-25 12:21:35