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

时间:2009-05-21 15:29:16

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

我遇到一个问题,我尝试打开我的ASP.NET MVC应用程序,但是我得到了一个ASP.NET错误页面,上面写着:

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

     

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

     

请求的网址:/EventScheduler/account.aspx/login

     

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

我正在使用此博客文章中的网址技巧,这就是为什么我在网址中有.aspx:

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

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

有什么想法吗?我想我必须忘记一步。

22 个答案:

答案 0 :(得分: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 }

答案 1 :(得分:12)

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

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

答案 2 :(得分:5)

确保在提供文件之前,您没有告诉IIS检查文件是否存在。这个人咬了我几次。执行以下操作:

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

答案 3 :(得分:4)

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

答案 4 :(得分:3)

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

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

答案 5 :(得分:1)

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

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

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

答案 6 :(得分:1)

需要确保的两件事:

1)Global.ascxController Project

中应该是正确的

2)不要忘记在Web Project中添加firstArray的引用(视图与控制器分开的项目

第二个是我的情况。

答案 7 :(得分:1)

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

错误

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

解决

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

答案 8 :(得分:1)

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

答案 9 :(得分:0)

在你的项目中打开Global.asax.cs,然后右键单击Method RouteConfig.RegisterRoutes(RouteTable.Routes);然后单击“转到定义” 然后在defaults: new { controller = "Home", action = "Index", id =UrlParameter.Optional} 然后改变名称" Home"您自己的控制器名称和索引到您自己的视图名称,如果您已更改其他名称然后" HomeController"和"索引" 希望你的问题能得到解决。

答案 10 :(得分:0)


第1步:检查您是否收到了以下更新? http://support.microsoft.com/kb/894670如果您有,可能需要按照此过程查看它是否适合您。它部分适用于我。 它提到要删除的附加“/”的项目并不完全正确,但它确实给了我一些洞察力,可以稍微改变我的项目属性。

第2步:右键单击Solun中Web项目的属性。 选择WEB>选择当前页面而不是特定页面。

第3步:进入你的* .aspx选择一个起始页面的项目。 (应该与当前页面相同或选择您选择的另一个:)) 点击调试运行。

答案 11 :(得分:0)

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

有时,如果您在应用程序网址中使用虚拟目录,请执行以下操作:

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

没有路由会接收请求。

溶液:

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

答案 12 :(得分:0)

转到浏览器右键单击要查看的任何页面 - >在浏览器中查看。 这种方式与我合作。

答案 13 :(得分:0)

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

不要使用html风格评论c#代码,即

答案 14 :(得分:0)

请记住使用PUBLIC for ActionResult:

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

而不是

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

答案 15 :(得分:0)

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

答案 16 :(得分:0)

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

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

答案 17 :(得分:0)

我有类似的问题。但是我在启用SSL的情况下在本地使用Episerver。当我没得到

  

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

我收到一个不安全的连接错误。 最后,对我来说,PluralSight上的这篇文章以及配置网站url,并相应地在Admin Manage Website's屏幕上的项目配置中设置了ssl链接,解决了这个问题。

答案 18 :(得分:0)

就我而言,我需要替换它:

@Html.ActionLink("Return license", "Licenses_Revoke", "Licenses", new { id = userLicense.Id }, null)

与此:

<a href="#" onclick="returnLicense(event)">Return license</a>

<script type="text/javascript">
    function returnLicense(e) {
        e.preventDefault();

        $.post('@Url.Action("Licenses_Revoke", "Licenses", new { id = Model.Customer.AspNetUser.UserLicenses.First().Id })', getAntiForgery())
            .done(function (res) {
                window.location.reload();
            });
    }
</script>

即使我不明白为什么。欢迎提出建议!

答案 19 :(得分:0)

对我来说,解决了以下步骤:

发生这种情况的一个原因是,如果您在Web项目的属性下没有起始页或错误的起始页设置。这样做:

1-右键单击您的MVC项目

2-选择“属性”

3-选择“网络”标签

4-选择“特定页面”

假设您有一个名为HomeController的控制器和一个名为Index的操作方法,请在与“特定页面”单选按钮相对应的文本框中输入“ home / index”。

现在,如果启动Web应用程序,它将带您进入HomeController的Index操作方法呈现的视图。

答案 20 :(得分:0)

它需要您添加一个Web Form,只需添加属性->新项目-> Web Form即可。然后你运行它,它会工作。简单

答案 21 :(得分:-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>