Мое приложение ASP.NET MVC2 с проверкой подлинности с помощью форм блокирует доступ даже к изображениям, стилям и сценариям - PullRequest
5 голосов
/ 16 сентября 2010

Я занимаюсь разработкой приложения MVC2 и использую в нем проверку подлинности с помощью форм.

Все сценарии, изображения и стили заблокированы для незарегистрированных пользователей, и, следовательно, страница входа выглядит ужасно.

Локально работает, проблема в том, когда я публикую на сервере.

У кого-нибудь есть идеи ПОЧЕМУ ????

PS: сервер IIS версии 7.5

My Web.config :

<configuration>
  <system.web>
    <globalization culture="pt-BR" uiCulture="pt-BR" />
    <httpRuntime requestValidationMode="2.0"/>
    <customErrors mode="Off" />
    <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" />
      </assemblies>
    </compilation>

    <pages>
      <namespaces>
        <add namespace="System.Web.Mvc" />
        <add namespace="System.Web.Mvc.Ajax" />
        <add namespace="System.Web.Mvc.Html" />
        <add namespace="System.Web.Routing" />
        <add namespace="Admin.Models" />
      </namespaces>
    </pages>

    <authentication mode="Forms">
      <forms name="AGAuth" loginUrl="~/Home/Login" timeout="120" />
    </authentication>
  </system.web>

  <system.webServer>
    <validation validateIntegratedModeConfiguration="false"/>
    <modules runAllManagedModulesForAllRequests="true"/>
  </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>

  <connectionStrings>
      <add name="DBContainer" connectionString="metadata=res://*/Database.DB.csdl|res://*/Database.DB.ssdl|res://*/Database.DB.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=thewebserver.com,5158;Initial Catalog=thedatabase;Persist Security Info=True;User ID=theuser;Password=thepassword;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" />
  </connectionStrings>

</configuration>

Ответы [ 9 ]

4 голосов
/ 16 сентября 2010

Добавьте файл web.config в папки скриптов, изображений и стилей, сообщая asp.net, что он разрешает доступ всем пользователям (убедитесь, что у вас нет ничего, к чему вы не хотите, чтобы анонимные пользователи имели доступ к ):

<configuration>
      <system.web>
         <authorization>
            <allow users="*"/>
         </authorization>
      </system.web>
</configuration>

Что касается причины, IIS сообщает, что asp.net должен обрабатывать все запросы:

  <system.webServer>
    <validation validateIntegratedModeConfiguration="false"/>
    <modules runAllManagedModulesForAllRequests="true"/>
  </system.webServer>
3 голосов
/ 07 октября 2010

У меня была точно такая же проблема.

Причиной оказалась конфигурация аутентификации IIS. Благодаря включению анонимной проверки подлинности (а также проверке подлинности с помощью форм и отключению проверки подлинности Windows) сценарии, стили и изображения стали доступны после выхода из системы.

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

Вы можете установить права доступа к необходимым папкам следующим образом:

<location path="App_Themes">
    <system.web>
      <authorization>
        <allow users="*"/>
      </authorization>
    </system.web>
  </location>
  <location path="images">
    <system.web>
      <authorization>
        <allow users="*"/>
      </authorization>
    </system.web>
  </location>
  <system.web>
1 голос
/ 17 ноября 2010

Вы можете установить права доступа к нужным папкам, как это

<location path="App_Themes">
<system.web>
  <authorization>
    <allow users="*"/>
  </authorization>
</system.web>

1 голос
/ 29 октября 2010

Группе IIS_WPG нужен доступ для чтения к сгибу. Теперь все работает нормально ... надеюсь, это поможет кому-то еще

1 голос
/ 16 сентября 2010

Ознакомьтесь с документацией для элемента местоположения .Я думаю, что первый пример даст вам то, что вам нужно.

Для удобства, вот пример, упомянутый:

<configuration>
   <location path="Logon.aspx">
      <system.web>
         <authorization>
            <allow users="?"/>
         </authorization>
      </system.web>
   </location>
</configuration>
0 голосов
/ 05 августа 2011

У меня тоже была такая же проблема, и я попробовал то, что предложил Скотт Н, но это не сработало ...

Получается, что для пользователя, которому назначена анонимная аутентификация, было задано значение IUSR (щелкните правой кнопкой мыши «Анонимная аутентификация» -> «Изменить»), у которого не было доступа к моему коду. Я дал доступ к удостоверению пула приложений, поэтому я выбрал эту опцию, нажал «ОК» и, бинго, все заработало.

0 голосов
/ 16 сентября 2010

Вы случайно скопировали или создали файл Web.config в папке «Содержимое», в котором есть элемент <authorization>, который может запрещать доступ?

0 голосов
/ 16 сентября 2010

Это полный удар в темноте, но каковы права на папки с изображениями и css?Если они настроены так, что только авторизованные люди могут получить к ним доступ, у вас есть проблема.Вы можете попробовать установить права на эти папки для всех или для пользователя .net по умолчанию и посмотреть, что вы получите.

...