У меня один на один, и я думаю, что это может быть ошибкой в реализации Microsoft MVC. Я создаю веб-сайт MVC с использованием VS2008 SP1. В попытке заблокировать мой сайт я отредактировал мой контроллер так, чтобы он выглядел так:Почему ASP.NET MVC MapRoute появляется диалоговое окно проверки подлинности Windows?
1 public class IdeaController : Controller
2 {
3 [Authorize(Users = "whozmom")]
4 public ActionResult Index(string zapp, int? page)
Я использую членство в ASP.NET и проверку подлинности форм. Когда я публикую свой код на своем хосте, он открывает диалоговое окно проверки подлинности Windows. Я ломаю себе голову, пытаясь понять, какое редактирование я мог бы сделать, чтобы вызвать это. Я полностью переписал свое приложение, пытаясь понять это, и сузил его до одного изменения в моем файле Global.asax.cs. Во-первых, позвольте мне показать вам (соответствующая часть) на прослушивается версии:
1 routes.MapRoute(
2 "Ideas",
3 "{zapp}/{page}/",
4 new { controller = "Idea", action = "Index", zapp = "Office", page = "" }
5 );
6
7 routes.MapRoute(
8 "Default", // Route name
9 "{controller}/{action}/{id}", // URL with parameters
10 new { controller = "Idea", action = "Index", id = "" } // Parameter defaults
11 );
Когда я запускаю свой код с этим маршрутом локально мой браузер просто приходит пустой ... страница входа никогда не показывает. Если я запустил мое приложение на своем хосте, он откроет диалоговое окно проверки подлинности Windows. Если я изменю свою маршрутизацию, вместо этого:
1 routes.MapRoute(
2 "Ideas",
3 "Ideas/{zapp}/{page}/",
4 new { controller = "Idea", action = "Index", zapp = "Office", page = "" }
5 );
6
7 routes.MapRoute(
8 "Default", // Route name
9 "{controller}/{action}/{id}", // URL with parameters
10 new { controller = "Idea", action = "Index", id = "" } // Parameter defaults
11 );
Все работает нормально. Обратите внимание на редактирование в строке # 3, добавив «Идеи /» перед моей строкой URL. Может кто-то объяснить это мне? Я также могу устранить проблему, удалив строку авторизации с моего контроллера (строка № 3 выше), но потом, конечно, я потерял свою безопасность.
UPDATE: Вот мой полный раздел членство:
<membership>
<providers>
<clear />
<add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider,
System.Web,
Version=2.0.0.0,
Culture=neutral,
PublicKeyToken=b03f5f7f11d50a3a"
connectionStringName="ApplicationServices"
enablePasswordRetrieval="false"
enablePasswordReset="true"
requiresQuestionAndAnswer="false"
requiresUniqueEmail="false"
passwordFormat="Hashed"
maxInvalidPasswordAttempts="5"
minRequiredPasswordLength="6"
minRequiredNonalphanumericCharacters="0"
passwordAttemptWindow="10"
passwordStrengthRegularExpression=""
applicationName="/" />
</providers>
</membership>