使用操作 link 转到 {controller}/Index 时出现 403.13
403.13 when using action link to go to {controller}/Index
调试我的 header 链接时出现以下错误。
我已经尝试重新创建我的 Index.cshtml(空的 Razor/HTML)和我的 ServicesController。
如果我明确浏览到 Services/Index,则页面会正确加载。
IE: localhost:58069/Services/ 不工作但是 localhost:58069/Services/Index 可以
我的其他控制器使用相同的结构和 ActionLink 助手正常工作。
无效代码:
public class ServicesController : Controller
{
// GET: Services
public ActionResult Index()
{
return View();
}
}
操作 Link HTML Services/Index
的助手
<li>@Html.ActionLink("Services", "Index", "Services")</li>
工作代码
public class HomeController : Controller
{
// GET: Home/Index
public ActionResult Index()
{
return View();
}
}
工作帮手
<li>@Html.ActionLink("Welcome", "Index", "Home")</li>
路由配置
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
尝试了以下 SO 解决方案:
此行为是由您项目中的服务文件夹(在脚本文件夹下)引起的。在 IIS 中托管时,您不应拥有与 ASP.NET 路由同名的文件或文件夹。
解决方法:
routes.RouteExistingFiles = true;
会让ASP.NET处理所有路由
- 重命名您的服务文件夹或控制器
- 将服务移至单独的库并从 Web 项目中删除该文件夹
我推荐后一个选项,因为将 RouteExistingFiles
设置为 true 需要额外的研究来仔细检查您没有打开任何安全漏洞,并且它会清理您的 Web 项目(有点分离永远不会受伤)。
调试我的 header 链接时出现以下错误。
我已经尝试重新创建我的 Index.cshtml(空的 Razor/HTML)和我的 ServicesController。 如果我明确浏览到 Services/Index,则页面会正确加载。
IE: localhost:58069/Services/ 不工作但是 localhost:58069/Services/Index 可以
我的其他控制器使用相同的结构和 ActionLink 助手正常工作。
无效代码:
public class ServicesController : Controller
{
// GET: Services
public ActionResult Index()
{
return View();
}
}
操作 Link HTML Services/Index
的助手<li>@Html.ActionLink("Services", "Index", "Services")</li>
工作代码
public class HomeController : Controller
{
// GET: Home/Index
public ActionResult Index()
{
return View();
}
}
工作帮手
<li>@Html.ActionLink("Welcome", "Index", "Home")</li>
路由配置
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
尝试了以下 SO 解决方案:
此行为是由您项目中的服务文件夹(在脚本文件夹下)引起的。在 IIS 中托管时,您不应拥有与 ASP.NET 路由同名的文件或文件夹。
解决方法:
routes.RouteExistingFiles = true;
会让ASP.NET处理所有路由- 重命名您的服务文件夹或控制器
- 将服务移至单独的库并从 Web 项目中删除该文件夹
我推荐后一个选项,因为将 RouteExistingFiles
设置为 true 需要额外的研究来仔细检查您没有打开任何安全漏洞,并且它会清理您的 Web 项目(有点分离永远不会受伤)。