Tylko ten odpowiedział na osobnym wątku, ale będę ponownie po
Zdecydowałam się zrobić to na poziomie aplikacji, zamiast IIS. Oto szybki filtr akcji, który napisałem, aby to zrobić. Po prostu dodaj klasę gdzieś w projekcie, a następnie dodaj [RequiemWww] do pojedynczej akcji lub całego kontrolera.
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);
}
}
Następnie
[RequiresWwww]
public ActionResult AGreatAction()
{
...
}
lub
[RequiresWwww]
public class HomeController : BaseAppController
{
..
..
}
nadzieja, że ktoś pomaga. Twoje zdrowie!
Myślę, że to raczej pytanie IIS. Powinieneś dodać tag, aby zwrócić uwagę IISersów. –
Dlaczego chcesz to zrobić? – SLaks
Nie będę podawał tego jako odpowiedzi, ponieważ wymagałoby to zmiany stosu deweloperów. Ale oto jak rozwiązałem ten sam problem dla mojego bloga za pomocą Apache: http://pastie.org/630298. Jedyną różnicą jest to, że przygotowuję blog zamiast www. Zauważ też, że ten sam serwer odpowiada dla obu nazw domen w moim przypadku (nie wiem, czy to twój przypadek). –