Что вызывает 404.4 на IIS 7.5 для доставки статического файла? - PullRequest
2 голосов
/ 18 марта 2012

Я пытаюсь установить для моей страницы по умолчанию значение Index.html на сайте ASP.NET, работающем на IIS7.5.Я продолжаю получать 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 ]

2 голосов
/ 18 марта 2012

Для обработки статического содержимого в iis 7.5 вам необходимо зарегистрировать mime-тип через следующий элемент в файле web.config внутри элемента. Я в основном использую для mp4 видео без ошибок 404.4.

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

</staticContent>
0 голосов
/ 21 марта 2012

В итоге мы разделили проект.Нашей целью было создать сервисный бэкенд с продуманным JavaScript-интерфейсом.Кое-что из этого - попробовать разные модели и идеи, которые у нас есть.Я пишу сервис, а мой друг пишет интерфейс.Поговорив об этом, им не нужно для участия в одном проекте.

То есть я создам API, а он создаст клиента, который можно разместить в любом месте.Имея это в виду, мой сайт теперь будет просто выполнять работу API, и ему не нужно будет предоставлять HTML в качестве страницы по умолчанию.

0 голосов
/ 19 марта 2012

Шаг назад ... где вы устанавливаете документ по умолчанию?

Если вы установите его в web.config, то вы говорите, что среда выполнения ASP.Net будет / должна обрабатывать расширение .html. Другими словами, web.config относится к ASP.Net.

Вы установили документ по умолчанию в IIS? Если это просто статический файл, ASP.Net не нужно даже подключать - IIS должен обрабатывать htm / html файлы из коробки.

...