ASP.NET PageHandlerFactory(.html文件)

时间:2009-08-19 19:13:57

标签: asp.net

我已将这些行添加到web.config以使.hand文件由pagehandlerfactory处理 - 但是当我将该站点发布到实时Web主机时它无效。它适用于我的开发盒(不使用IIS),但我的实时没有任何其他选项可以添加任何东西......这是一个共享的托管环境。

我该怎么做?我没有得到任何错误,所以我知道它不能因为root.config覆盖。

            <compilation debug="true">
        <assemblies>
            <add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
            <add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
            <add assembly="System.Web.Abstractions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
            <add assembly="System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
            <add assembly="System.Web.Mvc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
            <add assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
            <add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
            <add assembly="System.Data.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
        </assemblies>
        <buildProviders>
            <add extension=".html" type="System.Web.Compilation.PageBuildProvider" />
        </buildProviders>
    </compilation>

        <httpHandlers>
        <remove verb="*" path="*.asmx"/>
        <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
        <add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
        <add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" validate="false"/>
        <add verb="*" path="*.mvc" validate="false" type="System.Web.Mvc.MvcHttpHandler, System.Web.Mvc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
        <add verb="*" path="*.html" type="System.Web.UI.PageHandlerFactory" />

然后在HTML页面中......

<%@ Page Language="C#" AutoEventWireup="true" Inherits="System.Web.UI.Page" %>

 ...     &lt;%Response.Write(“Testing。这是ASP.NET编写的内容。”); %GT;

1 个答案:

答案 0 :(得分:2)

最可能的问题是IIS未配置为通过ASP.NET路由.html文件的请求。

检查您的网站的IIS属性,主目录选项卡,配置...按钮,映射选项卡。

在顶部,您将看到文件扩展名列表以及该扩展程序的处理程序。任何不在该列表中的东西都只是作为一个平面文件提供,这在重负载时效率更高,而不是只加载ASP.NET环境然后只是将文件写入响应。

所以解决方案基本上只是将.html / .htm添加到列表中,并从其他一个中复制设置,如.aspx

我怀疑这在您的开发计算机上运行的原因是您从调试器而不是通过IIS运行网站。调试器处理所有请求,而不是处理更复杂的IIS。

请注意,这是所有IIS 6及以下信息 - 如果您使用的是IIS 7,则会有所不同。