asp.net - 是什么导致 IIS 7.5 上传递静态文件时出现 404.4?

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

我正在尝试将在 IIS7.5 上运行的 ASP.NET 站点上的默认页面设置为 Index.html。我不断收到 404.4,它告诉我未设置处理程序。然而,我有一个<handler>和一个<httpHandlers>为我的 html 页面设置的值。我还指定了默认文档。但我不断收到 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>

最佳答案

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

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

</staticContent>

关于asp.net - 是什么导致 IIS 7.5 上传递静态文件时出现 404.4?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9760034/

相关文章:

asp.net - 测试特定的 Azure 网站实例

IIS Web 平台安装程序错误 : 'doctype' is an unexpected token. 预期 token 为 'DOCTYPE' 。 1号线,位置3

azure - HTTP 探测如何在 VM 上具有多个站点的 Azure IaaS 负载平衡集中工作

azure - DotNetOpenAuth 和 Windows Azure 以及 MVC3 Web 角色

javascript - jQuery onLoad 处理程序

c# - 我应该如何在 Web API Controller 方法中返回数据?

asp.net - IIS 7 强制新鲜图像

c# - MSDeploy - 允许参数在 parameters.xml 中是可选的/为空的

javascript - 使用 JavaScript 进行 asp.net 文本框文本格式验证

asp.net - 在安装 ASP.NET 4.0 后的 IIS6.0 中,“编辑配置”按钮被禁用