【问题标题】:Problems with routing to areas in ASP NET MVC after the project is published项目发布后路由到 ASP NET MVC 中的区域的问题
【发布时间】:2019-07-08 21:14:44
【问题描述】:

我在 ASP.NET MVC 中创建的项目有两个区域,它的结构在图片上:

当我启动它时,它会根据用户的 IP 地址采用两条路由之一。代码本身是这样的:

if (myRole.Count == 0){
    return View ("~/Views/Shared/UserNotFound.cshtml");
 }if ((String.Equals(myRole[0], "Менеджер")) || ((myRole.Count > 1))){
     return RedirectPermanent("/Manager/ManagerHome/Index");
 }else{
     return RedirectPermanent("/Practitioner/PractitionerHome/Index");
 }

但是当我发布项目时,它的结构完全不同:

当然,区域中没有“Controllers”、“Files”和“Models”之类的文件夹(例如,图中显示的Manager 区域)。因此,当我在 Web 浏览器中运行项目时,出现 404 错误。什么可能导致问题?我应该更改路径还是项目没有正确发布?

PS:不知这是否会导致问题:这个项目已经重新发布——我是第一次发布,在iis中删除并重新发布。这是我第一次使用 ASP.NET MVC 发布的应用程序,所以我对这种行为的原因一无所知。

感谢船长的问题,我提供了一些附加信息:该项目有许多文件夹,其中包括“区域”。但是当我使用 localhost/Aspid 在 localhost(项目名称是 Aspid 并且它位于 intepub\wwwroot\Aspid 内)上运行它时,它会转到 localhost/Manager/ManageHome - 我在其中一个控制器中编写的路径。但是项目的结构缺少 Manage/ManagerHome 文件夹。发布后应该怎么做才能成功运行?

【问题讨论】:

  • 绝对正确,您没有像控制器类这样的 cs 文件。因为它们是在 bin 文件夹中编译的。看来你还有一个问题。即使您直接从浏览器打开 url '/Manager/ManagerHome/Index',是否也会收到 404 错误?
  • 船长,谢谢您的回答。如您所见,没有文件夹 /Manager/ManagerHome 等。只有 /Manager/Views。此外,当我在 localhost(在 iis 中)上运行我的应用程序时,它不会运行所有路径,而是从以下区域之一的文件夹开始:localhost/Manager/ManagerHome,它不存在。

标签: c# asp.net-mvc iis asp.net-mvc-areas


【解决方案1】:

您是否右键单击区域并添加一个新文件夹而不是区域?您缺少告诉 RouteConfig 这是一个区域的 [AreaName]AreaRegistration.cs 文件。

确保您右键单击项目或区域文件夹 > 添加 > 区域。

【讨论】:

  • foremaro,谢谢。我不太了解你。您提到的文件位于其中一个文件夹中,当我在 VS2019 中构建它时,该项目运行良好。准确嵌入所有区域。
猜你喜欢
  • 2011-11-17
  • 1970-01-01
  • 2020-09-12
  • 1970-01-01
  • 1970-01-01
  • 2012-02-21
  • 2012-08-03
  • 1970-01-01
  • 2012-03-03
相关资源
最近更新 更多