IIS7 url重写后 本身静态的html文件不能访问

时间:2022-12-18 23:59:39
IIS7 url重写后 ,重写的aspx文件能运行正常,
重写规则如下:
  <rewrite url="^/chihe/360-p([0-9]+).html$" to="/chihe/index.aspx?pid=$1" processing="stop"></rewrite>
这样的话 在iis7添加 脚本映射 *.html能访问 重写的aspx文件
   
但 本身的html文件不能访问了,提示这个错误
““/”应用程序中的服务器错误。
--------------------------------------------------------------------------------

未能执行 URL。 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 

异常详细信息: System.Web.HttpException: 未能执行 URL。”




[color=#FF0000]重写是用rewriter.dll写的 ,在iis6下就能成功[/color]

 

9 个解决方案

#1


本身不能用嘛,webconfig需要加一句这个
<compilation>
<buildProviders>
<add extension=".html" type="System.Web.Compilation.PageBuildProvider"/>
</buildProviders>
</compilation>

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

#2


  <httpHandlers>
        <add verb="*" path="*.html" type="System.Web.StaticFileHandler" />
 </httpHandlers>

#4


IIS 7采用与asp.net整合/集成的模式.

当你把.html的url都交与asp.net处理时(IIS不再插手了),伪.html可以对应aspx,就可以执行,否则,asp.net对真正的.html(但不符合重写规的)就不知道如何处理了,导致这次请求没有作任何处理.

IIS6.0中 IIS与asp.net是两级处理模式.先由IIS筛选,
符合重写规则的交与asp.net处理了.不符合的规的.html,自然仍由IIS处理.

#5


引用 1 楼 seesea125 的回复:
本身不能用嘛,webconfig需要加一句这个
<compilation>
<buildProviders>
<add extension=".html" type="System.Web.Compilation.PageBuildProvider"/>
</buildProviders>
</compilation>

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


这样添加了能成功,但是访问出来是乱码,不知道咋个回事

#6


引用 4 楼 newdigitime 的回复:
IIS 7采用与asp.net整合/集成的模式.

当你把.html的url都交与asp.net处理时(IIS不再插手了),伪.html可以对应aspx,就可以执行,否则,asp.net对真正的.html(但不符合重写规的)就不知道如何处理了,导致这次请求没有作任何处理.

IIS6.0中 IIS与asp.net是两级处理模式.先由IIS筛选,
符合重写规则的交与asp.net处理了.不符合的规的.html,自然仍由IIS处理.


你好,IIS7有两种模式,但在我上面那样配置重写只在经典模式下才能运行正常,在集成模式下就不能。

#7


恩,楼上的说得对啊!几楼的对啊?

#8


膜拜2楼。。。解决了真实html文件被 
<add verb="*" path="/*" type="URLRewriter.RewriterFactoryHandler, URLRewriter" />
后出现乱码的问题

#9


膜拜2楼

#1


本身不能用嘛,webconfig需要加一句这个
<compilation>
<buildProviders>
<add extension=".html" type="System.Web.Compilation.PageBuildProvider"/>
</buildProviders>
</compilation>

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

#2


  <httpHandlers>
        <add verb="*" path="*.html" type="System.Web.StaticFileHandler" />
 </httpHandlers>

#3


#4


IIS 7采用与asp.net整合/集成的模式.

当你把.html的url都交与asp.net处理时(IIS不再插手了),伪.html可以对应aspx,就可以执行,否则,asp.net对真正的.html(但不符合重写规的)就不知道如何处理了,导致这次请求没有作任何处理.

IIS6.0中 IIS与asp.net是两级处理模式.先由IIS筛选,
符合重写规则的交与asp.net处理了.不符合的规的.html,自然仍由IIS处理.

#5


引用 1 楼 seesea125 的回复:
本身不能用嘛,webconfig需要加一句这个
<compilation>
<buildProviders>
<add extension=".html" type="System.Web.Compilation.PageBuildProvider"/>
</buildProviders>
</compilation>

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


这样添加了能成功,但是访问出来是乱码,不知道咋个回事

#6


引用 4 楼 newdigitime 的回复:
IIS 7采用与asp.net整合/集成的模式.

当你把.html的url都交与asp.net处理时(IIS不再插手了),伪.html可以对应aspx,就可以执行,否则,asp.net对真正的.html(但不符合重写规的)就不知道如何处理了,导致这次请求没有作任何处理.

IIS6.0中 IIS与asp.net是两级处理模式.先由IIS筛选,
符合重写规则的交与asp.net处理了.不符合的规的.html,自然仍由IIS处理.


你好,IIS7有两种模式,但在我上面那样配置重写只在经典模式下才能运行正常,在集成模式下就不能。

#7


恩,楼上的说得对啊!几楼的对啊?

#8


膜拜2楼。。。解决了真实html文件被 
<add verb="*" path="/*" type="URLRewriter.RewriterFactoryHandler, URLRewriter" />
后出现乱码的问题

#9


膜拜2楼