1

Windows Server 2008 R2에서 IIS 7.5에서 호스팅되는 MVC3 웹 응용 프로그램이 있습니다. 이 사이트는 Windows 인증 뒤에 있습니다. 사이트를 방문 할 때 로그온 프롬프트가 표시됩니다. 폼 인증을 사용하는 두 번째 수준의 로그인이 있습니다. (요점은 공중에게서 위치를 은폐하는이다, 등등.)IIS 7.5에서 호스팅되는 MVC3 응용 프로그램에서 리소스가 항상 다운로드되지 않는 경우

나는 위치에 가고, Windows 인증 로그인 프롬프트를 전달한 다음 로그인 페이지 (양식 인증)를 볼 때, 일부 자원은 적재되지 않는다. 예를 들어 CSS 파일이나 JavaScript 파일이로드되지 않을 수 있습니다. 내가 새로 고침을하면 (때로는 몇 번 걸립니다) 누락 된 파일이 제대로로드됩니다. 계속 새로 고침을하면이 오류를 반복해서 재현 할 수 있습니다. 때때로 모든 리소스가로드되고 다른 리소스는로드되지 않습니다.

  • Windows 인증 부분을 제거하면 문제가 사라집니다. 매번 사이트가 완벽하게로드됩니다.
  • 리소스가 가끔 제대로로드되어 있기 때문에 권한 문제 일 수 있다고 생각하지 않습니다.
  • 브라우저 캐시를 비우기 전후에 발생하기 때문에 캐시 문제가 아닌 것 같습니다.
  • IE 및 Chrome에서 재생했기 때문에 브라우저 관련 문제가 아닙니다.

편집 1 : 내가 분명히 크롬, 누락 된 자원을 보려면, 내가 대신 내가 예상 CSS 나 자바 스크립트 콘텐츠, 로그인 페이지가 반환되는 것을 알 수있다.

편집 2 : 물론 Css, Images 및 JavaScript 폴더에 대한 익명 액세스를 사용 설정했는데 물론 문제가 수정되었습니다. 나는 왜 그 내용이 때로는 나오고 때로는 그렇지 않았는지 알고 싶습니다.

편집 3 : Web.config는 아래에 있습니다. 컨트롤러 나 동작에 [Authorize]을 추가하여 특정 동작을 보장합니다. 다른 모든 것은 "열어"있어야합니다.

<?xml version="1.0"?> 

<configuration> 
    <configSections> 
     <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/> 
    </configSections> 

    <appSettings ... /> 

    <connectionStrings ... /> 

    <system.net> 
     <mailSettings> 
      <smtp ... /> 
     </mailSettings> 
    </system.net> 

    <system.web> 
     <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.Helpers, Version=1.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=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
       <add assembly="System.Web.WebPages, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
       <add assembly="System.Data.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> 
      </assemblies> 
     </compilation> 

     <authentication mode="Forms"> 
      <forms loginUrl="~/Account/Login" timeout="2880"/> 
     </authentication> 
    </system.web> 

    <system.webServer> 
     <defaultDocument enabled="true"> 
      <files> 
       <clear /> 
       <add value="Index"/> 
      </files> 
     </defaultDocument> 

     <validation validateIntegratedModeConfiguration="true"/> 
     <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-2.0.0.0" newVersion="3.0.0.0" /> 
      </dependentAssembly> 
     </assemblyBinding> 
    </runtime> 

    <log4net xsi:noNamespaceSchemaLocation="http://csharptest.net/downloads/schema/log4net.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
     <appender name="FileAppender" type="log4net.Appender.RollingFileAppender"> 
      <file value="..\Logs\Web.txt"/> 
      <appendToFile value="true"/> 
      <rollingStyle value="Size"/> 
      <maxSizeRollBackups value="10"/> 
      <maximumFileSize value="10MB"/> 
      <layout type="log4net.Layout.SimpleLayout"/> 
     </appender> 

     <root> 
      <level value="ALL"/> 
      <appender-ref ref="FileAppender"/> 
     </root> 
    </log4net> 
</configuration> 
+0

서버에서 응답을 받았는지 확인 했습니까? 예 : Fiddler 또는 Firebug를 사용하여 이러한 요청에 대한 HTTP 상태 코드를 확인하십시오. –

+0

예, 위의 ** 수정 **에 추가되었습니다. –

+0

정적 리소스 대신 로그인 페이지가 반환되는 것을 볼 수 있습니다. 즉, 첫 번째 장벽 인 Windows 인증 부분을 지나쳤습니다. 따라서 ASP.NET MVC 응용 프로그램 자체가 사용자를 로그인 페이지로 리디렉션하여 이러한 리소스에 대한 액세스를 보호하고있는 것처럼 보입니다. 그러나 Windows 인증 부분을 사용하지 않으면 이것이 작동하는 이유는 설명하지 않습니다. 더 이상 그것을 진단하기 위해 Fiddler의 실제 요청과 응답을 실제로 볼 필요가 있습니다. –

답변

0

가끔은 효과가 있었기 때문에 인증되었을 때 효과가 있었습니까? 요청이 실패하면 사용자가 인증되었는지 확인하십시오. 따라서 적어도 배제 할 수 있습니다.

+0

아니요. 로그인 (Windows Auth)하면 다음 페이지가 올바르게 표시되거나 표시되지 않을 수 있습니다. 이 시점부터 새로 고침하면 올바르게 다운로드되거나 표시된 페이지와 잘못 다운로드되거나 표시된 페이지가 생성됩니다. 모든 리소스를 다운로드 할 수 있는지 여부는 무작위로 보입니다. –

관련 문제