ASP.NET MVC页面将无法加载并说“无法找到资源”

问题描述 投票:28回答:17

我有一个问题,我尝试打开我的ASP.NET MVC应用程序,但我得到的ASP.NET错误页面说:

'/'应用程序中的服务器错误。

无法找到该资源。说明:HTTP 404.您要查找的资源(或其中一个依赖项)可能已被删除,名称已更改或暂时不可用。请查看以下网址,确保拼写正确。

请求的URL:/EventScheduler/account.aspx/login

版本信息:Microsoft .NET Framework版本:2.0.50727.3053; ASP.NET版本:2.0.50727.3053 **

我正在使用此博客帖子中的URL技巧,这就是为什么我在URL中有.aspx:

http://blog.codeville.net/2008/07/04/options-for-deploying-aspnet-mvc-to-iis-6/

它适用于我的其他沙盒服务器(不是开发机器),现在我只是将它作为新的虚拟目录部署到我的生产站点,但由于某种原因,它似乎实际上正在寻找.aspx文件。

有任何想法吗?我想我一定是忘记了一步。

c# asp.net asp.net-mvc
17个回答
14
投票

我找到了解决这个问题的方法,你不必删除global.asax,因为它包含一些有价值的信息,让你的proyect顺利运行,而是查看你的控制器的名字,在我的情况下,我的控制器被命名了作为MyController.cs的东西,在global.asax中,它试图引用一个Home Controller。

在全局的asax中寻找这一行

routes.MapRoute(
   "Default", // Route name
   "{controller}/{action}/{id}", // URL with parameters
   new { controller = "Home", action = "Index", id = UrlParameter.Optional } 

在我的情况下,我必须得到这样的工作

    new { controller = "My", action = "Index", id = UrlParameter.Optional }

0
投票

假设从其他地方复制源代码。

有时,如果您在应用程序URL中使用虚拟目录,例如:

http://localhost:50385/myapp/#/

没有路由会接收请求。

解:

明确单击项目文件中的“创建虚拟目录”按钮。


0
投票

在你的项目中打开Global.asax.cs然后右键单击Method RouteConfig.RegisterRoutes(RouteTable.Routes);然后单击Go To Definition然后在defaults: new { controller = "Home", action = "Index", id =UrlParameter.Optional}然后将“Home”的名称更改为您自己的控制器Name和Index到您自己的View Name如果您更改了其他名称,那么“HomeController”和“Index”希望您的问题将得到解决。


0
投票

第1步:检查您是否收到以下更新? http://support.microsoft.com/kb/894670如果你有,你可能想要遵循这个程序,看看它是否适合你。它部分适用于我。它提到要删除的附加“/”的项目并不完全正确,但它确实给了我一些洞察力来改变我的项目属性。 第2步:右键单击Solun中Web项目的属性。选择WEB>选择当前页面而不是特定页面。 第3步:进入你的* .aspx选择一个起始页面的项目。 (应该与当前页面相同或选择您选择的另一个:))点击调试运行。


0
投票

在浏览器中右键单击 - >在浏览器中查看,转到要查看的任何页面。这样跟我合作。


0
投票

经过几个小时的调试,我的html视图中只是一个c#错误。检查您的视图并追踪任何错误

不要使用html样式评论c#代码,即


0
投票

打开Controller.cs文件并靠近public ActionResult Index(),代替Index写下您要在浏览器中运行的页面名称。对我来说,这是public ActionResult Login()


0
投票

记得使用PUBLIC for ActionResult:

public ActionResult Details(int id)
{
    return View();
}

代替

 ActionResult Details(int id)
 {
     return View();
 }

0
投票

你必须检查你是否在控制器中实现了页面,例如:

   public ActionResult Register()
        {
            return View();
        } 

-1
投票

我遇到了下面的脚本导致的同样问题。问题是由url变量引起的。当我添加http://|web服务器名称| / |应用程序名称|时在/Reports/ReportPage.aspx前面...它开始工作了。

<script>
    $(document).ready(function () {
        DisplayReport();
    });

    function DisplayReport() {
        var url = '/Reports/ReportPage.aspx?ReportName=AssignmentReport';

        if (url === '')
            return;
        var myFrame = document.getElementById('frmReportViewer');
        if (myFrame !== null) {
            if (myFrame.contentWindow !== null && myFrame.contentWindow.location !== null) {
                myFrame.contentWindow.location = url;
            }
            else {
                myFrame.setAttribute('src', url);
            }
        }
    }
</script>

12
投票

我在构建时遇到了同样的错误。默认设置是使用URLRoute设置进行导航。如果通过右键单击任何cshtml页面选择“设置为启动页面”属性,则会抛出此错误,因为始终在Global.asax文件下指向当前页面。

查看“启动路径的项目属性”并将其删除。


5
投票

确保在提供文件之前,不要告诉IIS检查并查看文件是否存在。这个人咬了我几次。请执行下列操作:

打开IIS管理器。右键单击您的MVC网站,然后单击属性。打开“虚拟目录”选项卡。单击配置...按钮。在通配符应用程序映射下,确保您有到c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll的映射。确认“验证文件存在”未检查!


4
投票

如果您运行的是IIS 6及更高版本,请确保应用程序池是您的MVC应用程序。正在使用设置为集成管理管道模式。我错误地设置为Classic,并且发生了同样的错误。


3
投票

找不到页面导致关联的控制器不退出。只需创建特定的Controller。如果您尝试显示主页,并使用Visual Studio 2015,请按照下列步骤操作:

  1. 右键单击Controller文件夹,然后选择Add> Controller;
  2. 选择MVC 5控制器 - 空;
  3. 点击添加;
  4. 将HomeController放入控制器名称;
  5. 构建项目,然后再次运行项目

我希望这有帮助


2
投票

您应该仔细检查您的路线值。

routes.MapRoute(
   "Default", // Route name
   "{controller}/{action}/{id}", // URL with parameters
   new { controller = "Home", action = "Index", id = UrlParameter.Optional } 

在这种情况下,请确保您拥有Controller'Home',因为如果没有带有索引操作的HomeController,应用程序将无法加载。在我的情况下,我有HomesController,我错过了家的前面。我修复了名称不匹配问题,这解决了我本地环境和服务器上的问题。


1
投票

有同样的问题,在我的情况下,原因是虚拟目录文件夹中缺少web.config文件。


1
投票

构建MVC应用程序时遇到了同样的错误。 在我的情况下,它发生是因为我忘了在控制器名称中添加字符串“Controller”。

Error With

public class ProductType : BaseController
{
    public ProductType()
    {
    }
}

Resolved

public class ProductTypeController : BaseController
{
    public ProductTypeController ()
    {
    }
}

1
投票

需要确保的两件事:

1)Route应该在Global.ascx文件中正确

2)不要忘记在你的Controller Project中添加Web Project的参考(查看与控制器分开的项目)

第二个是我的情况。

© www.soinside.com 2019 - 2024. All rights reserved.