繁体   English   中英

.aspx页不在MVC5应用程序的根目录时导致“ 404 not found”

[英].aspx page causes “404 not found” when not in root of an MVC5 app

好吧,这让我难过了,整日忙着。 我有一个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文件,但在“报告”子文件夹中却找不到我的.aspx文件。

甚至更陌生的是,我可以在本地发布并将本地IIS7.5指向发布的站点,并且可以路由到我的.aspx文件。 发布到远程服务器(共享主机),我得到404!

如果有人对可能的原因有任何线索...也许是IIS配置设置? ...我将不胜感激。 我从字面上搜索了一整天,没有发现排序的任何东西。

提前致谢...

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

正如评论中smirnov所提到的,访问.aspx文件都不需要route.Ignore或route.IgnoreRoute语句。 但是,您可能会遇到我最近也遇到的一个问题。 因此,我将介绍这种情况。

如果您使用的是“ 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>

当然,必须有一些优雅的解决方案,例如“ Routes.Ignore()”,但是,我要指出的是,缺少这些不是.aspx文件不可访问的原因。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM