我不信.NET mvc无法实现首页静态化,但是手中确实没有思路。似乎放在网站根目录下而不是views里,静态页面可以访问,但是IIS里设置默认文档也没用啊,网站首页打开的还是views/home/index.cshtml这个页面,并没有去访问根目录下的 index.html,郁闷啊,园中的实践主义者和大牛们有何良方。小弟跪拜了!!
配置一条路由规则即可
如果配置规则,说明走的还是MVC,就失去了静态化的优势了。
老大,给句配置呗,相信园中的小弟们翘首以盼呢,否则这.NET mvc的路走不下去了
@flyjonson:
配置代码如下:
routes.IgnoreRoute("");
@dudu: 老大,用了这句,别的配置都不起作用了,那如何是好啊
@flyjonson: 我这里测试正常,routes.IgnoreRoute("");放在routes.MapRoute之前
@dudu: 在不启用二级域名的情况下确实是正确的,但是如果启用了二级域名的话,所有的二级域名都走这条配置,直接跑到网站首页去了
@flyjonson:
实现IRouteConstraint接口:
public class DomainXXXXConstraint : IRouteConstraint { public bool Match(HttpContextBase httpContext, Route route, string parameterName, RouteValueDictionary values, RouteDirection routeDirection) { return httpContext.Request.Url.Host.ToLowerInvariant() == "XXXX"; } }
然后:
routes.IgnoreRoute("", new DomainXXXXConstraint());
@dudu: 老大,这个约束无效啊,和没用一样,或者我直接routes.IgnoreRoute("", false);在二级域名时也照样不行。
@flyjonson: 在约束中你是如何判断的?
@dudu:用你上面的代码啊,xxx直接用网站域名代替,判断下访问的是否是首页,然后返回bool类型,可是无论我返回的是true还是false,routes.ignoreroute("",new domainxxxconstraint())都无效,打开二级域名还是一级域名,都是打开网站根目录下的index.html
@flyjonson: 试试:
routes.IgnoreRoute("", new { DomainConstraint = new DomainXXXXConstraint() });
@dudu: 欧了,老大就是老大啊,万分感谢,这问题困扰我都快一年了,终于解脱了
你把index.html中代码拷到index.cshtml中多省事