网站如何添加代码,平面设计培训地址机构,怎么把网站关联到万网,西安建设教育网站背景
在默认情况下#xff0c;MVC框架是支持对服务器静态资源的访问的#xff0c;我们在项目根目录下新建一个Content文件夹#xff0c;然后添加一个命名为“StaticContent.html”的html文件#xff0c;如下图所示#xff1a; StaticContent.html中的代码如下图所示MVC框架是支持对服务器静态资源的访问的我们在项目根目录下新建一个Content文件夹然后添加一个命名为“StaticContent.html”的html文件如下图所示 StaticContent.html中的代码如下图所示
!DOCTYPE html
html
head
meta http-equivContent-Type contenttext/html; charsetutf-8/title/titlemeta charsetutf-8 /
/head
bodyThis is the static html file(~/Content/StaticContent.html)
/body
/html
运行项目输入URL可以看到能访问到这个文件 为磁盘文件定义路由
为了安全考虑希望用户不能访问某些文件夹我们可以增加如下代码 public static void RegisterRoutes(RouteCollection routes){routes.RouteExistingFiles true;} 这段代码告诉MVC框架对于静态文件我们也要走路由机制默认情况下MVC框架发现请求的文件存在于服务器上时会绕过路由机制直接读取文件 然后新建一条更具体的静态路由映射文件路径请求如下图所示
public static void RegisterRoutes(RouteCollection routes)
{routes.RouteExistingFiles true;routes.IgnoreRoute({resource}.axd/{*pathInfo});routes.MapMvcAttributeRoutes();//映射到Customer控制器上的List方法routes.MapRoute(DiskFile,Content/StaticContent.html,new { controller Customer,action List});routes.MapRoute(name: Default,url: {controller}/{action}/{id},defaults: new { controller Home, action Index, id UrlParameter.Optional });
}
再次运行项目 还是能访问到如下图所示 配置应用程序服务器
以上这么做还不够需要配置应用程序服务器。首先启动MVC项目在右下角找到 IIS Express如下图所示 右键点击 选择“显示所有应用程序”后如下图所示 单击网站名称后在出现的配置一栏中再次点击配置如下图所示 在打开的文件中搜索“UrlRoutingModule-4.0” 关键字如下图所示 将preCondition属性设置为空字符串如下图所示
add nameUrlRoutingModule-4.0 typeSystem.Web.Routing.UrlRoutingModule preCondition /
在VS中重新运行项目让修改后的配置生效并导航到/content/StaticContent.html可以看到映射已经生效 当然可以自己修改Customer控制器下List方法返回的页面代码增加个提示比如“无法访问资源文件”什么的。 注意IIS 和 IIS Express的处理方式是有区别的如果你的程序发布到IIS上需要在web.config中添加如下代码否则静态文件还是会交由IIS处理而不会被路由。如下图所示 configurationsystem.webServermodules runAllManagedModulesForAllRequeststrue /......./system.webServer
/configuration 绕过路由系统
到这里还没结束以上方法禁止了对所有资源文件的访问。如果现在去请求scripts文件夹下的静态js文件能看到如下图所示 如果希望排除某些资源文件 绕过路由系统可以用以下代码
public class RouteConfig{public static void RegisterRoutes(RouteCollection routes){routes.RouteExistingFiles true;routes.IgnoreRoute(Scripts/{*pathInfo});}} 在这种情况下URL模式将匹配任何两个片段的URL第一个片段是“Scripts”第二个片段{*pathInfo}是所有路径的意思。 IgnoreRoute方法在RouteCollection中创建了一个条目在RouteCollection中路由处理程序是StopRoutingHandler类的一个实例而不是MvcRouteHandler类。路由系统被硬编码以识别这个处理程序。如果传递给IgnoreRoute方法的URL模式匹配那么后面的路由将不会被计算就像匹配一个普通的路由一样。 再次访问JS文件成功如下图所示 本文结束 部分参考来自这篇文章