ASP.NET MVC 2 & IIS: ошибка HTTP 500.24 favicon.ico - PullRequest
0 голосов
/ 11 ноября 2010

У меня немного странное поведение с моим приложением ASP.NET MVC 2.

Я использую IIS 7.5, проверку подлинности Windows и олицетворение ASP.NET для загрузки своей веб-страницы.

После нескольких поисков я не нашел хорошего способа избавиться от запроса 500.24, который я продолжаю получать при каждой загрузке страницы (favicon.ico в корневом каталоге вызывает это):

Fiddler

Я смотрел некоторые статьи, например , эту или , эту , но это, похоже, не решило мою проблему.Мне нужно, чтобы эти настройки были включены для моего приложения: конвейер интегрированного режима .NET 4 Framework, аутентификация Windows и олицетворение ASP.NET.

Вот упрощенная версия моего web.config, если он может кому-нибудь помочь (конечно, я удалил строки подключения по соображениям безопасности ..)

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.web>
    <customErrors mode="Off" />
    <identity impersonate="true" />
    <compilation debug="true" targetFramework="4.0">
      <assemblies>
        <add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        <add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        <add assembly="System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        <add assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
        <add assembly="System.Data.Entity.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
      </assemblies>
    </compilation>
    <authentication mode="Windows">
      <!-- roleManager enabled="true" defaultProvider="AspNetWindowsTokenRoleProvider" / -->
      <!-- forms loginUrl="~/Account/LogOn" timeout="2880" / -->
    </authentication>
    <membership>
      <providers>
        <clear />
        <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="ApplicationServices" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/Globe" />
      </providers>
    </membership>
    <profile>
      <providers>
        <clear />
        <add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="ApplicationServices" applicationName="/Globe" />
      </providers>
    </profile>
    <roleManager enabled="false">
      <providers>
        <clear />
        <add name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="ApplicationServices" applicationName="/Globe" />
        <add name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" applicationName="/Globe" />
      </providers>
    </roleManager>
    <pages>
      <namespaces>
        <add namespace="System.Web.Mvc" />
        <add namespace="System.Web.Mvc.Ajax" />
        <add namespace="System.Web.Mvc.Html" />
        <add namespace="System.Web.Routing" />
      </namespaces>
    </pages>
  </system.web>
  <system.webServer>
    <httpProtocol>
      <customHeaders>
        <add name="X-UA-Compatible" value="IE=edge" />
      </customHeaders>
    </httpProtocol>
    <validation validateIntegratedModeConfiguration="false" />
    <modules runAllManagedModulesForAllRequests="true">
      <remove name="WebDAVModule" />
    </modules>
    <security>
      <requestFiltering>
        <verbs>
          <add verb="PUT" allowed="true" />
          <add verb="DELETE" allowed="true" />
        </verbs>
      </requestFiltering>
    </security>
  </system.webServer>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0" newVersion="2.0.0.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
  <system.serviceModel>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
  </system.serviceModel>
</configuration>

Мое приложение ISработает, favicon.ico загружается, мне просто интересно, почему он генерирует 500.24 при каждом запросе (Конечно, возможно, это Fiddler, который не может аутентифицировать себя и вызывает ошибку HTTP 500.24, но когда это происходит нормально, это вызываетa 401.2 - вместо этого неавторизовано ...)

Ответы [ 3 ]

2 голосов
/ 11 ноября 2010

Я предполагаю, что favicon.ico либо работает в другом пуле приложений, либо в корневом каталоге сайта есть файл.Итак: 1) Проверьте, содержит ли корень сайта (каталог, в котором находится /favicon.ico) файл web.config.Если это так, то проверьте, не устанавливает ли он system.web / httpModule, или httpHandler, или system.web / identity (impersonate) или что-то в этом роде, и пул приложений работает в интегрированном режиме.

Итак, вам нужно либо удалить нарушающий настройку httpmodule / httphandler / impersonate, либо изменить пул приложений, чтобы он работал как классический, либо добавить ту же конфигурацию, которую включает в себя ваш сайт.

0 голосов
/ 11 ноября 2010

Я нашел ответ на свою проблему =)

Ты наверняка будешь смеяться надо мной .. = P

Ну, часть ответа - <validation validateIntegratedModeConfiguration="false" />в C: \ inetpub \ wwwroot, на который указывал CarlosAg, но с другой стороны я просто забыл добавить <link rel="icon" href="<%: Url.Content("~/favicon.ico")%>" type="image/x-icon" /> в мой файл Site.Master в моем приложении ASP.NET MVC 2.Поскольку Chrome и IE проверяют корневой каталог для favicon.ico, он работает, но я до сих пор не заметил, что Firefox не загружает значок.

Теперь значок загружается накаждый браузер, и в Fiddler не отправлено HTTP-запроса 500.24.

Спасибо!=)

0 голосов
/ 11 ноября 2010

Что сказал КарлосАг.Дешевое решение - переместить значок в обиженное приложение, а не лаять дерево.

...