Если вы используете IIS 7, вы можете использовать расширение для перезаписи URL. ScottGu имеет сообщение в блоге об этом здесь .
В качестве альтернативы, если вы хотите сделать это в коде, вы можете наследовать от PerRequestTask. Вот пример кода, который удаляет www из адреса - это из Shrinkr :
public class RemoveWww : PerRequestTask
{
protected override TaskContinuation ExecuteCore(PerRequestExecutionContext executionContext)
{
const string Prefix = "http://www.";
Check.Argument.IsNotNull(executionContext, "executionContext");
HttpContextBase httpContext = executionContext.HttpContext;
string url = httpContext.Request.Url.ToString();
bool startsWith3W = url.StartsWith(Prefix, StringComparison.OrdinalIgnoreCase);
bool shouldContinue = true;
if (startsWith3W)
{
string newUrl = "http://" + url.Substring(Prefix.Length);
HttpResponseBase response = httpContext.Response;
response.StatusCode = (int) HttpStatusCode.MovedPermanently;
response.Status = "301 Moved Permanently";
response.RedirectLocation = newUrl;
response.SuppressContent = true;
response.End();
shouldContinue = false;
}
return shouldContinue ? TaskContinuation.Continue : TaskContinuation.Break;
}
}
Вам просто нужно проверить URL, заканчивающийся на / в вашем коде.
** Обратите внимание, что для этого используется стороннее пространство имен dll - System.Web.MVC.Extensibility. **