【发布时间】:2015-03-05 10:10:44
【问题描述】:
我用 Index 方法得到了一个控制器(名为 DeficienciesController)
public ActionResult Index(int? deficiencyReviewId)
{
return View();
}
但是当我在 IIS Express 8 中本地运行应用程序时,它不会点击 Index 方法,而是会获得状态代码 301,并且浏览器会在 url 中添加 /。
奇怪的是,当我将网站发布到网络服务器时,它运行得非常好.. 当使用 Html.ActionLink 它的 a 标签看起来像这样:
<a href="/Deficiencies">Deficiencies</a>
所以我希望它链接到:http://localhost:49440/Deficiencies
但是当我点击它时,它会变成:http://localhost:49440/Deficiencies/
IIS 给了我一个“HTTP Error 403.14 - Forbidden”页面,因为它正在尝试浏览文件夹内容..控制器操作没有被调用..
如果我将属性路由添加到控制器和操作,一切正常,Html.ActionLink 找到正确的路由,但这不是我想要的。
我的 RouteConfig 如下所示:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapMvcAttributeRoutes();
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional });
}
Index 动作是控制器中唯一不起作用的动作,其他动作完全正常。
编辑:
我希望我能返回一个解决方案,但我唯一可行的解决方案是将项目从源代码控制拉到一个新位置,然后删除操作中的 int 值。然后Index页面工作了..然后我做了一个新的动作,它采用了defectiveReviewId int..所以我真的没有找出问题所在,但它一定是我电脑的本地问题,因为我的同事得到了它工作..
【问题讨论】:
-
尝试将您的变量defectiveReviewId 重命名为“id”。
-
我刚试过。我期待带有 ID 的 ActionLink 看起来像这样:http://.../Deficiencies?Id=9,但现在它看起来像 http://../Deficiencies/Index/9。除了没有ID的页面仍然给出错误403.14。
标签: c# asp.net-mvc iis-7 asp.net-mvc-5