При запуске приложения, перед входом в систему, я хочу, чтобы несколько «страниц», которые находятся в той же папке, что и моя страница входа, были в порядке.
На старой земле aspx вы поместили файл web.config в папку, где жили эти страницы, и сделали это:
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
Как правильно сделать это на земле MVC?Я пытался не помещать тег [Authorize] в методы контроллера, которые я хотел бы получить доступ, но это, кажется, не сокращает его.
Интересные новые доказательства ...
Я пошел в мою сеть.config
Я изменил это:
<authorization>
<deny users="?" />
<allow users="*" />
<deny users="*" verbs="OPTIONS, PROPFIND, HEAD" />
</authorization>
на:
<authorization>
<allow users="*" />
</authorization>
и теперь, если я наберу этот путь:
http://localhost/StudentPortal3G/Account/ChangePasswordSelfService
это работает,
Но если я наберу этот путь:
http://localhost/StudentPortal3G/Account.mvc.aspx/ChangePasswordSelfService
это не так (и это путь, сгенерированный Atml.ActionLink(...))
Я полагаю, что это должно быть ключом, и я подозреваю, что моя маршрутизация виновата, но я не вижу этого.
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.IgnoreRoute("{resource}.css/{*pathInfo}");
routes.IgnoreRoute ( "{resource}.jpg/{*pathInfo}" );
routes.IgnoreRoute ( "{resource}.jpg" );
routes.IgnoreRoute ( "{resource}.gif/{*pathInfo}" );
RouteTable.Routes.IgnoreRoute("{folder}/{*pathInfo}", new { folder = "Assets" });
RouteTable.Routes.IgnoreRoute ( "{folder}/{*pathInfo}", new { folder = "Images" } );
routes.IgnoreRoute ( "{*favicon}", new
{
favicon = @"(.*/)?favicon.ico(/.*)?"
} );
routes.IgnoreRoute("elmah.axd");
//routes.MapRoute("About", "Home/About", new { controller = "Home", action = "About", id = "" });
// you have to add this IgnoreRoute so that the PDFX pages get handled like a regular *.aspx page, not a MVC page. - EWB
routes.IgnoreRoute("{resource}.pdfx");
// allow MVC to run on IIS 5,6,7
///86383/asp-net-mvc-i-iis-5
routes.Add(new Route("{controller}.mvc.aspx/{action}", new MvcRouteHandler()) { Defaults = new RouteValueDictionary(new { controller = "Email" }) });
routes.MapRoute(
"Email", // Route name
"{controller}/{action}/{id}", // URL with parameters
null // Parameter defaults
);
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = "" } // Parameter defaults
);
routes.MapRoute(
"Default2", // Route name
"{controller}.aspx/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = "" } // Parameter defaults );
);
routes.MapRoute(
"Default3", // Route name
"{controller}.mvc.aspx/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = "" } // Parameter defaults );
);
}
Больше информации:если я закомментирую их, HTML.ActionLink начнет генерировать работающую ссылку.
routes.Add(new Route("{controller}.mvc.aspx/{action}", new MvcRouteHandler()) { Defaults = new RouteValueDictionary(new { controller = "Email" }) });
routes.MapRoute(
"Default2", // Route name
"{controller}.aspx/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = "" } // Parameter defaults );
);
routes.MapRoute(
"Default3", // Route name
"{controller}.mvc.aspx/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = "" } // Parameter defaults );
);
Затем, если я верну эту ссылку (которая необходима для работы на сервере 2008, я верю):
routes.Add(new Route("{controller}.mvc.aspx/{action}", new MvcRouteHandler()) { Defaults = new RouteValueDictionary(new { controller = "Email" }) });
снова начинает падать ...
У кого-нибудь есть идеи?
Любая помощь приветствуется.