我用IHttpHandler把几个html文件改成伪静态了,我在服务器设置了IIS里的应用程序配
置--映射,添加.html为c:\windows\microsoft.net\framework\v2.0.50727
\aspnet_isapi.dll了,伪静态成功了,但其它真的html文件却打不开了,提示Internet Explorer 无法显示该页面,请问是什么问题呢?

解决方案 »

  1.   

    本身html是由iis直接解析的,你用了httphander以后就默认由你的hander来处理了,如果你只是实现了一个伪静态,也就是没有实际去读取html内容并且返回给浏览器的操作了,所以如果你非要用httphander来做伪静态的话,你就在handler里面再写一个逻辑,如果不是需要做静态的,那么你就去读取那个html文件,并且写入response的输出流就ok了 
      

  2.   

    我试过了,如果不在IIS里设置,不能实现伪静态,但设置了IIS其它真的hmtl又不能运行。
    我的web服务器是win2003,但在本地(winXP)里运行是正常的.
      

  3.   

    这位朋友,实现伪静态是可以用httpmodule的,实际上用的是url重写来实现的,我不太明白你写的伪静态是什么逻辑
      

  4.   

    web.config
    <httpHandlers>
    <add verb="POST,GET" path="index.html" type="UrlRewriter"/>
    ....
    </httpHandlers>UrlRewriter类public class UrlRewriter : IHttpHandler, IRequiresSessionState
    {
        
    public void ProcessRequest(HttpContext context)
    {
    string Url = context.Request.RawUrl;
    ....
    //获得文件名FileName
    if(FileName=="index.html"){
    realfilename = "default.aspx";
    }else{
    realfilename = FileName +".html";
    }context.Server.Execute(Url_Path + realfilename);
    }public bool IsReusable
        {
            get { return true; }
        }
    }
      

  5.   

    if(FileName=="index.html"){
    realfilename = "default.aspx";
    }else{
    realfilename = FileName +".html";
    }context.Server.Execute(Url_Path + realfilename);

    else
    {
      //这里要写读取实际html的逻辑,我觉得你还是用httpmodule吧,这个不好
    }
      

  6.   

    在HttpModule里面做伪静态就不会出现你说的那个问题
      

  7.   

    我用HttpModule试了,但在vs2008可以实现,但在IIS建虚似目录后,根本不能实现伪静态呀?
      

  8.   

    用httpHandlers终于可以了,原来要在IIS里设置应用程序配 置--映射
    在下面的参数里添加c:\windows\microsoft.net\framework\v2.0.50727 
    \aspnet_isapi.dll,不要选检查文件是否存在的,就可以了,呵呵...
      

  9.   

    又加了,<compilation> 
          <buildProviders> 
            <add extension=".html" 
    type="System.Web.Compilation.PageBuildProvider" /> 
          </buildProviders> 
        </compilation> 
    不知这句有无影响