我在路由配置文件里配置了/Home/Index为默认路由,而且在本地测试中访问http://localhost:6747/是可以直接显示控制器Home下面的Index视图页面的。
我把整个项目上传到空间商提供的虚拟机上之后,默认路由就不能被识别了!
访问http://xxxxx.com时提示未未找到默认文件拒绝访问,只有我访问http://xxxxx.com/Home时才能显示我要的那个/Home/Index默认首页。
请问这个应该怎么处理啊?是虚拟主机配置的问题,还是我的项目代码的问题?
我的虚拟主机在线控制面板设置了这样的默认文件,还是不行。。求大神帮忙。。
试试在web.config中加上
<system.webServer> <modules runAllManagedModulesForAllRequests="true" /> </system.webServer>
谢dudu!这个配置代码已经设置过了,不然我在本地访问就不会正常了。。关键是传到服务器上就不能识别了,如何是好?
@eecc: 服务器上应用程序池是集成模式吗?
@dudu: 这个我不清楚也。。。。这个会影响它的路由配置啊?
@eecc: http://xxxxx.com/Index.aspx 能不能访问?
@dudu: 不能啊,我的这个站点是MVC框架开发的本来就没这个文件,访问的URL都是由路由配置文件重新解析的。
@eecc: 如果路由配置正确,应该是能正常访问的,http://xxxxx.com/default.aspx 能不能访问?
@dudu: 不能啊,根目录都没有default.aspx这个文件。我在本地服务器测试是完全正常的,访问http://localhost/直接可以显示/Home下面的Index视图,但放在线上服务器就失效了。我的文件目录是这个样子:
@dudu:
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using System.Web.Routing; namespace Kuaibank.com { public class RouteConfig { public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } ); } } }
这是路由配置文件的代码,dudu帮看看有木有问题?
@eecc: 建议先确认一下应用程序池是否是集成模式
@dudu: 这个太奇葩了,我把它的首页默认文件添加了一个Views/Index.cshtml就可以了!!!奇葩啊!!!
@eecc: 可能与虚拟主机的处理机制有关
。。。mvc相关的dll需要手动拷贝哦,发布不出来的,有些。
为哈不结贴呢?太对不起大家的热心了