zoukankan      html  css  js  c++  java
  • 地址转向时候 IIS不支持html格式解决办法

    今天在做一个网站的时候。进行URL重写操作。结果出现了两个让人意想不到的事情。。真是头疼

    第一个到现在还没有结果呢。。也不知道具体是什么原因

    配置好映射以后。其他页面都正常重写成功。但有个别重写不了

    一个是about.aspx,一个是contact.aspx

    实际访问这两个ASPX文件都可以正常显示。

    重写成about.html和contact.html就是打不开。。提示该页无法显示

    网上搜索也没什么结果。后来我把文件名改了一下。改成company.aspx和contactus.aspx

    再重写。。就正常了。。难道这两个文件名不能使用。。真是怪?!

    第二个问题。就是重写完成以后。真实存在的HTML文件却打不开了。。

    不过这个问题。在网上找到了答案。。

    今天把它复制下来。。以便以后查看

    网上搜索出来的

    问题描述:
        一套网站程序使用URL重写,配置了ISAPI映射.html  动作全部,检查文件是否存在 不打勾 如下图

      问题:不对IIS配置.html的映射,IIS站点目录下.html页面都能显示。当配置了.html的映射 IIS站点目录下真实存在的.html页面无法显示,错误信息:“页面无法显示”而通过自定义HttpHandlerFactory块过滤的.html文件能够显示,由于这个原因就连FCKEditor也无法正常显示。

    这个问题困扰了半天,极度郁闷, 在网上找了好久,也没有个办法,有一个和我一样的问题,但上面说的解决方法却不好用,更是郁闷,后来经过n次的测试修改,才把这个问题解决了,解决方法:
    1、首先照旧在网站配置的应用程序扩展名映射中添加扩展名.html映射到aspnet_isapi.dll,是否存在不选;
    2、在web.config文件中<compilation>节点下添加code:

    <buildProviders>
            <add extension=".html" type="System.Web.Compilation.PageBuildProvider" />
    </buildProviders>
    注:仅仅设置应用程序映射是不够的,没有为扩展名“.html”注册的生成提供程序。因此别忘了上面的code!

    3、在web.config文件中<system.web>节点下添加code:
    <httpHandlers>
          <add path="html/*.html" verb="*" type="AutoModuleService.AutoHandlerFactory,AutoModuleService" validate="true"/>
          <add path="*.html" verb="*" type="System.Web.UI.PageHandlerFactory" validate="true"/>
        </httpHandlers>


    注:这里值得注意的是add的先后顺序,很简单的原理,通过这个配置文件请求首先要到我们自定义的httpHandler块,如果不在我们指定的path里,则走系统的PageHandlerFactory; 还有一个要注意的地方就是,这里当

    <add path="html/*.html" verb="*" type="AutoModuleService.AutoHandlerFactory,AutoModuleService" validate="true"/>
    指明路径后,并不像下级目录继承,也就是当用户浏览html/vip/index.html时,并不被我自定义的AutoModuleService.AutoHandlerFactory处理,而是被系统的System.Web.UI.PageHandlerFactory正常处理;如果需要继承指明路径下包括下级目录所有*.html的话,则就需要做些修改了

    修改方法:

    上面的1和2照做;

    3、在web.config文件中<system.web>节点下添加code:

    <httpHandlers>
          <add path="*.html" verb="*" type="System.Web.UI.PageHandlerFactory" validate="true"/>
        </httpHandlers>

    (我用的是这种)

    4、在web.config文件中<configuration>节点下使用<location>节点,添加code:

      <location path ="html">

        <system.web>
          <httpHandlers>
            <add path="*.html" verb="*" type="AutoModuleService.AutoHandlerFactory,AutoModuleService" validate="true"/>
          </httpHandlers>

        </system.web>

      </location>

    最后补充两点:
    如果你用到的后缀类型是一种古怪的后缀。
    比如:*.aaa *.csdn 等这样的后缀,
    在IIS6 中,你需要额外再多做一步:
    在IIS的站点属性->HTTP头->MIME类型中增加一个该后缀的MIME类型,不然遇到该后缀的请求时将首先被IIS给拦截掉,没办法显示的。

    注意:在本人试的时候,如果按上面做的话,html页是能访问了,但是伪静态不对,好像出错。如果只保留
    <buildProviders>
            <add extension=".html" type="System.Web.Compilation.PageBuildProvider" />
    </buildProviders>
    则是正确的。不知道问题出在哪
    本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/sgear/archive/2009/07/30/4393689.aspx


       本人博客的文章大部分来自网络转载,因为时间的关系,没有写明转载出处和作者。所以在些郑重的说明:文章只限交流,版权归作者。谢谢

  • 相关阅读:
    进程池的使用
    同步提交,异步提交
    协程
    单线程下实现并发的套接字
    批量上传
    TP中的session和cookie
    ajaxReturn
    ajax的两种方式
    Yii里表单的操作方法(展示渲染待续......)
    Yii里文件上传的操作方法(图片修改,在详情上展示,批量上传待续...)
  • 原文地址:https://www.cnblogs.com/wzg0319/p/1541849.html
Copyright © 2011-2022 走看看