做了个小项目,用了URLRewriter在本地调试的时候可以运行,但发布成网站后,在iis下却不能运行。。看了网上很多都说不知道怎么解决,有的解决办法是建立*.*到aspnet_isapi.dll的映射就可以我这样做了下,html的就行了。。但如果没有扩展名的映射应该怎么弄呢?比如说http://localhost:81/news32.aspx映射为http://localhost:81/news32这样该怎么弄????
还有个疑问就是,如果发布到服务器上,我有那么大的权限去添加这个*.*到aspnet_isapi.dll的映射吗?最后就想找个能用代码解决的方案!

解决方案 »

  1.   

    参考下这个吧,我也是最近看的.使用环境:windows XP Professional
    开发平台:NET2.0,VS2005
    已经过测试,实现了伪静态技术的实现,可以实现诸如Show.aspx?MyID=1成功转换为1.html的转换,现在将成果与大家分享一下:   引入:我们为什么不直接使用Show.aspx?MyID=1这种访问方式而非要使用1.html这样的访问方式呢,也许很多人都觉得没有必要再讲解下去,但是小弟也是初学者,考虑到很多现在和我一样水平的爱好者,都曾经为此烦恼不已,或者正在尝试无数次而未果,因此,此文仅针对菜鸟级的同胞们,希望对你们有所帮助,至于达人们看到了,希望提出更多的宝贵意见或建议,以咨鼓励本小虾,以咨为更菜的小虾们提供更多的更简单的更通用更实用的方法!!!
    http://www.itokit.com/   专业的web开发、编程、WEB页面设计等交流论坛
           好了,废话少讲,言归正传,以下为俺的实现过程:       ①:首先要有这个文件URLRewriter.dll,如果没有,赶快到网上下载一个,并将其放到下面的bin目录里面,并且将其引用添加到下面里面;       ②:下面就是Web.Config文件的配置了,当然,配置过程相当简单:
    http://www.itokit.com/   专业的web开发、编程、WEB页面设计等交流论坛
                 1:先添加这个<configSections>
       <section name="RewriterConfig" type="URLRewriter.Config.RewriterConfigSerializerSectionHandler, URLRewriter" />
       </configSections>
       <RewriterConfig>
    <Rules>
       <!-- Rules for Blog Content Displayer -->
       <RewriterRule>
           <LookFor>~/(.[0-9]*)\.html</LookFor>
           <SendTo>~/ArticleDetail.aspx?MyID=$1</SendTo>
          </RewriterRule>
    </Rules>
       </RewriterConfig>         2:再添加这个<httpHandlers>
       <add verb="*" path="*.aspx" type="URLRewriter.RewriterFactoryHandler, URLRewriter" />
       <add verb="*" path="*.html" type="URLRewriter.RewriterFactoryHandler, URLRewriter" />
    </httpHandlers>       至此,已成功一大半,上面两个都添加到Web.Config,添加到什么位置看来没必要讲了!       最后一步:在IIS中找到自己的虚拟目录网站,点属性,然后点配置,然后弹出应用程序配置对话框,选择添加,添加的可执行文件路径为c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll,扩展名为.html
      

  2.   

    只能在IIS 5.1中添加添加这个*.*到aspnet_isapi.dll的映射的.
    IIS 6.0 是不能添加这个*.*到aspnet_isapi.dll的映射.你必须这样做:操作方法:IIS站点属性 ->主目录 ->  配置选择或输入C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\aspnet_isapi.dll
    取消"确认文件是否存在"前的钩. 
    确定
      

  3.   


    如果是asp.net 2.0的话就选择 v2.0的aspnet_isapi.dll 
      

  4.   

    现在主要的问题是1、能否重写无扩展名的。2、上传到服务器后要配置iis,但一般情况下没有那么大的权限,无法配置啊
      

  5.   

    1. 能否重写无扩展名的。 当然可以,但是必需按照我的方法添加aspnet_isapi.dll,然后写好正则就可以了.2. 上传到服务器后要配置iis,但一般情况下没有那么大的权限,无法配置啊当然需要服务器管理权限, 虚拟主机不适用。
      

  6.   

    1 可以: 不过要在IIS里设置.
    2 权限是必要的.
      

  7.   

    2楼的是针对1.1的.我的是2.0的..还是感谢2楼..我也是这个问题
    只能在IIS 5.1中添加添加这个*.*到aspnet_isapi.dll的映射的. 
    IIS 6.0 是不能添加这个*.*到aspnet_isapi.dll的映射. 你必须这样做: 操作方法:IIS站点属性 ->主目录 ->  配置 
    选择或输入c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll取消"确认文件是否存在"前的钩. 
    确定