MVC3 URI с или без "/" показать другой ответ - PullRequest
1 голос
/ 06 июня 2011

В чем разница между этими двумя путями?

http://www.mydomain.com/testmvc3
http://www.mydomain.com/testmvc3/

Я поместил код в HomeController:

// GET: /Home/
public ActionResult Index()
{
    if (Request.IsAuthenticated)
    {
        return RedirectToAction("Index", "Member");
    }
    else
    {
        return View();
    }
}

Но тольковторая ссылка работает нормально, но первая показывает домашнюю страницу (даже если она аутентифицирована). Как заставить их реагировать одинаково?

Ответы [ 2 ]

1 голос
/ 07 июня 2011

Я обнаружил проблему, она была вызвана кешем страниц.Чтобы избежать проблемы, я изменяю код на:

[OutputCache(Duration = 30, VaryByCustom = "Request.IsAuthenticated")]
public ActionResult Index()
{
    if (Request.IsAuthenticated)
    {
        return RedirectToAction("Index", "Member");
    }
    else
    {
        return View();
    }
}

Теперь это работает.

0 голосов
/ 06 июня 2011

Вы хотите оставить косую черту вне обычного маршрута, в противном случае это указывает на то, что в действие могут входить параметры URL.

Чтобы применить это, вы можете проверить фильтр cleanurl, который находится в MvcCms. Исходный код

    private bool IsTrailingSlashDirty(ref string path)
    {
        //we only want a trailing slash on the homepage
        if (path.EndsWith("/") && !path.Equals("/"))
        {
            path = path.TrimEnd(new char[] { '/', '/' });
            return true;
        }
        return false;
    }
...