2009-05-11 6 views
3

У меня один на один, и я думаю, что это может быть ошибкой в ​​реализации 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> 

ответ

0

Кажется, мне ясно, что это вызвано неправильной настройкой маршрута. У вас правильно настроен маршрут к вашей странице входа в систему? Возможно, попробуйте RouteDebugger от Phil Haack: RouteDebugger 2.0

Смежные вопросы