.aspx页面导致" 404未找到"当不在MVC5应用程序的根目录中时

时间:2014-05-14 16:09:40

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

好的,这个让我难过,整天都在这里。我有一个MVC5应用程序,无法在子文件夹中找到.aspx页面。

所以我在这里有一个.aspx页面/Reports/page.aspx

我尝试根据各种网络搜索添加这些路由配置添加

routes.Ignore("{resource}.aspx/{*pathinfo}");
routes.Ignore("Reports/{resource}.aspx/{*pathInfo}");
routes.IgnoreRoute("Reports/{*allaspx}", new { allaspx = @".*\.aspx(/.*)?" });

我发现的问题是找到了网站根目录中的.aspx文件,而不是“Reports”子文件夹中的.aspx文件。

更奇怪的是,我可以在本地发布并在我发布的网站上指向我的本地IIS7.5,它可以很好地路由到我的.aspx文件。发布到远程服务器(共享主机)我得到了404!

如果有人知道可能是什么原因......也许是IIS配置设置? ...我很感激任何帮助。我整天用谷歌搜索,发现没有任何东西可以对它进行排序。

提前致谢...

2 个答案:

答案 0 :(得分:1)

注册routes.Ignore和routes.IgnoreRoute不是必需的。 aspx应该工作正常(它似乎在root中工作)。您确定没有任何重写规则或与/ Reports文件夹相关的其他路由吗?这是发生在所有文件夹?尝试创建一个空的aspx文件或只是把<%= Now%>并查看它是否与其他名称或其他文件夹一起使用。

答案 1 :(得分:0)

正如smirnov在评论中提到的,没有route.Ignore或routes.IgnoreRoute语句是访问.aspx文件所必需的。但是,您可能面临最近我也遇到的问题。所以,我会提到这个场景。

如果您正在使用" Web.sitemap"文件,你有" filename.aspx"的条目只是,您将面临访问该页面的站点地图条目的运行时错误。原因是,MVC框架转换" /abc.aspx"请求" / abc"。所以,我必须在web.sitemap中使用重复条目,如下所示:

<siteMapNode url="Account/AddUser.aspx" title="Add New User"  description="">
</siteMapNode>

<siteMapNode url="Account/AddUser" title="Add New User"  description="">
</siteMapNode>

当然,有一些优雅的解决方案,如&#34; Routes.Ignore()&#34;必须在那里,但是,我的观点是缺少那些不是.aspx文件无法访问的原因。