Asp.net mvc 为什么ASP.NET MVC MapRoute会弹出一个Windows身份验证对话框?
这一点让我感到困惑,我认为这可能是微软MVC实现中的一个缺陷。我正在使用VS2008 SP1构建一个MVC网站。为了锁定我的网站,我对控制器进行了如下编辑:Asp.net mvc 为什么ASP.NET MVC MapRoute会弹出一个Windows身份验证对话框?,asp.net-mvc,asp.net-mvc-routing,maproute,Asp.net Mvc,Asp.net Mvc Routing,Maproute,这一点让我感到困惑,我认为这可能是微软MVC实现中的一个缺陷。我正在使用VS2008 SP1构建一个MVC网站。为了锁定我的网站,我对控制器进行了如下编辑: 1 public class IdeaController : Controller 2 { 3 [Authorize(Users = "whozmom")] 4 public ActionResult Index(string zapp, int? page) 我正在使用ASP.NET成员资格和表单身份验证。当
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字符串前面添加了“Ideas/”。有人能给我解释一下吗?我也可以通过从我的控制器中删除授权行(上面的第3行)来解决这个问题,但是我当然会失去安全性
更新:这里是我的正式会员部分:
<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>
我很清楚,这是由错误配置的路由造成的。您是否正确配置了登录页面的路径?也许可以试试Phil Haack的RouteDebugger: