什么导致IIS 7.5上的404.4提供静态文件?

时间:2012-03-18 16:33:00

标签: asp.net iis web-config iis-7.5

我正在尝试在IIS7.5上运行的ASP.NET站点上将我的默认页面设置为Index.html。我一直得到404.4告诉我没有设置处理程序。但是,我为html网页设置了<handler><httpHandlers>值。我还指定了默认文档。但我一直得到404.4。

我可以浏览到myuri / index.html,但我无法将其作为默认值加载。

有什么建议吗?

这是我的web.config

<?xml version="1.0" encoding="UTF-8"?>

<configuration>
  <appSettings />
  <connectionStrings />
  <system.web>
    <authentication mode="Windows" />
    <customErrors mode="Off" />
    <compilation debug="true" targetFramework="4.0" />
    <httpHandlers>
      <add path="*.html" verb="*" type="System.Web.StaticFileHandler" />
      <add path="~/assets/*" verb="*" type="System.Web.StaticFileHandler"/>
      <add verb="*" path="*.rastahook" validate="false" type="OpenRasta.Hosting.AspNet.OpenRastaRewriterHandler, OpenRasta.Hosting.AspNet" />
    </httpHandlers>
    <httpModules>
      <add name="OpenRasta" type="OpenRasta.Hosting.AspNet.OpenRastaModule, OpenRasta.Hosting.AspNet" />
    </httpModules>
    <pages controlRenderingCompatibilityVersion="4.0" clientIDMode="AutoID" />
  </system.web>
  <system.webServer>
    <httpErrors errorMode="Detailed" />
    <asp scriptErrorSentToBrowser="true" />
    <defaultDocument enabled="true">
      <files>
        <clear />
        <add value="/index.html" />
      </files>
    </defaultDocument>
    <rewrite>
      <rules>
        <rule name="Remove WWW" stopProcessing="true">
          <match url="^(.*)$" />
          <conditions>
            <add input="{HTTP_HOST}" pattern="^(www\.)(.*)$" />
          </conditions>
          <action type="Redirect" url="threetasks.apphb.net{PATH_INFO}" redirectType="Permanent" />
        </rule>
      </rules>
    </rewrite>

    <httpCompression directory="%SystemDrive%\websites\_compressed" minFileSizeForComp="1024">
      <scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll" />
      <staticTypes>
        <add mimeType="text/*" enabled="true" />
        <add mimeType="message/*" enabled="true" />
        <add mimeType="application/javascript" enabled="true" />
        <add mimeType="application/json" enabled="true" />
        <add mimeType="*/*" enabled="false" />
      </staticTypes>
    </httpCompression>
    <urlCompression doStaticCompression="true" />
    <httpProtocol>
      <customHeaders>
        <add name="X-UA-Compatible" value="IE=Edge,chrome=1" />
        <add name="Access-Control-Allow-Origin" value="*" />
      </customHeaders>
    </httpProtocol>

    <validation validateIntegratedModeConfiguration="false" />
    <modules>
      <add name="OpenRasta" type="OpenRasta.Hosting.AspNet.OpenRastaModule, OpenRasta.Hosting.AspNet" />
    </modules>
    <handlers accessPolicy="Script,Read">
      <clear />
      <add name="StaticFile" path="index.html" verb="*"
           modules="StaticFileModule,DefaultDocumentModule,DirectoryListingModule" resourceType="Either" requireAccess="Read" />
      <add name="StaticFiles" path="~/assets/*" verb="*"
           modules="StaticFileModule,DefaultDocumentModule,DirectoryListingModule" resourceType="Either" requireAccess="Read" />
      <add name="OpenRasta" verb="*" path="*.rastahook"
           type="OpenRasta.Hosting.AspNet.OpenRastaRewriterHandler, OpenRasta.Hosting.AspNet" />
    </handlers>
    <staticContent>
      <!-- Set expire headers to 30 days for static content-->
      <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="30.00:00:00" />

      <remove fileExtension=".css" />
      <mimeMap fileExtension=".css" mimeType="text/css; charset=UTF-8" />
      <remove fileExtension=".js" />
      <mimeMap fileExtension=".js" mimeType="text/javascript; charset=UTF-8" />
      <remove fileExtension=".json" />
      <mimeMap fileExtension=".json" mimeType="application/json; charset=UTF-8" />
      <remove fileExtension=".rss" />
      <mimeMap fileExtension=".rss" mimeType="application/rss+xml; charset=UTF-8" />
      <remove fileExtension=".html" />
      <mimeMap fileExtension=".html" mimeType="text/html; charset=UTF-8" />
      <remove fileExtension=".xml" />
      <mimeMap fileExtension=".xml" mimeType="application/xml; charset=UTF-8" />

      <mimeMap fileExtension=".mp4" mimeType="video/mp4" />
      <mimeMap fileExtension=".m4v" mimeType="video/m4v" />
      <mimeMap fileExtension=".ogg" mimeType="video/ogg" />
      <mimeMap fileExtension=".ogv" mimeType="video/ogg" />
      <mimeMap fileExtension=".webm" mimeType="video/webm" />

      <!--<mimeMap fileExtension=".svg" mimeType="images/svg+xml" />-->
      <!--<mimeMap fileExtension=".svgz" mimeType="images/svg+xml" />-->

      <remove fileExtension=".eot" />
      <mimeMap fileExtension=".eot" mimeType="application/vnd.ms-fontobject" />
      <mimeMap fileExtension=".otf" mimeType="font/otf" />
      <mimeMap fileExtension=".woff" mimeType="font/x-woff" />
    </staticContent>
  </system.webServer>
</configuration>

3 个答案:

答案 0 :(得分:2)

要处理iis 7.5中的静态内容,需要通过element中web.config文件中的以下元素注册mime类型。我主要用于mp4视频,因为它出现404.4错误。

<staticContent> 
 <mimeMap fileExtension=".mp4" mimeType="video/mp4" /> 
 <!-- for html may be -->
 <mimeMap fileExtension=".html" mimeType="text/html" /> 

</staticContent>

答案 1 :(得分:0)

退后一步......你在哪里设置默认文件?

如果你在web.config中设置它,那么你说ASP.Net运行时将/应该处理.html扩展名。换句话说,web.config属于ASP.Net。

您是否在IIS中设置了默认文档? 如果它只是一个静态文件,甚至不需要ASP.Net - IIS应该处理开箱即用的htm / html文件。

答案 2 :(得分:0)

我们最终做的是拆分项目。我们的目标是拥有一个思考JavaScript前端的服务后端。其中一些是尝试我们拥有的不同模式和想法。我正在写这个服务而我的朋友正在写前端。在谈到它之后,他们不会需要在同一个项目中。

也就是说,我将创建一个API,他将创建一个可以在任何地方托管的客户端。考虑到这一点,我的网站现在只做API工作,不需要提供任何html作为默认页面。