好的,这个让我难过,整天都在这里。我有一个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配置设置? ...我很感激任何帮助。我整天用谷歌搜索,发现没有任何东西可以对它进行排序。
提前致谢...
答案 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文件无法访问的原因。