我已将这些行添加到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;
答案 0 :(得分:2)
最可能的问题是IIS未配置为通过ASP.NET路由.html文件的请求。
检查您的网站的IIS属性,主目录选项卡,配置...按钮,映射选项卡。
在顶部,您将看到文件扩展名列表以及该扩展程序的处理程序。任何不在该列表中的东西都只是作为一个平面文件提供,这在重负载时效率更高,而不是只加载ASP.NET环境然后只是将文件写入响应。
所以解决方案基本上只是将.html / .htm添加到列表中,并从其他一个中复制设置,如.aspx
我怀疑这在您的开发计算机上运行的原因是您从调试器而不是通过IIS运行网站。调试器处理所有请求,而不是处理更复杂的IIS。
请注意,这是所有IIS 6及以下信息 - 如果您使用的是IIS 7,则会有所不同。