1

Windows Server 2008 R2でIIS 7.5でホストされているMVC3 Webアプリケーションがあります。このサイトはWindows認証の背後にあります。サイトを訪問するときにログオンプロンプトが表示されます。フォーム認証を使用して2番目のレベルのログインがあります。 (ポイントは、サイトを公開から隠すことです。)IIS 7.5でホストされているMVC3アプリケーションでリソースが必ずしもダウンロードされない

私がサイトに行ったら、Windows認証のログインプロンプトを渡し、ログインページ(フォーム認証)を表示します。負荷しないでください。たとえば、CSSファイルまたはJavaScriptファイルが読み込まれないことがあります。私がリフレッシュした場合(時には数回かかる)、失われたファイルは大丈夫です。私がリフレッシュし続けると、このエラーを何度も再現することができます。場合によっては、すべてのリソースがロードされ、それ以外のリソースはロードされないことがあります。

  • Windows認証の部分を削除すると、問題が解決されます。サイトは毎回完璧に読み込まれます。
  • リソースが が正しく読み込まれることがあるため、アクセス権の問題ではないと思います。
  • ブラウザのキャッシュを空にする前後に発生するため、キャッシュの問題ではないようです。
  • IEとChromeで再現したため、ブラウザ固有の問題ではありません。

編集1:私は明らかに不足しているリソースを表示すると、Chromeで、私が代わりにCSSや私が期待されるJavaScriptコンテンツの、ログインページが返されることがわかります。

編集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 Authentication部分です。したがって、ASP.NET MVCアプリケーション自体が、ユーザーをログインページにリダイレクトすることによって、これらのリソースへのアクセスを保護しているようです。ただし、Windows認証の部分を無効にすると、これがなぜ機能するのか説明できません。実際にFiddlerで実際のリクエストと応答を見て、それをさらに診断する必要があります。 –

答えて

0

時々働いたので、認証されたときに機能することはありますか? リクエストが失敗した場合は、認証されていることを確認してください。少なくともそれを排除することができます。

+0

ログイン(Windows認証)した場合、次のページが正しく表示されないことがあります。この時点からリフレッシュすると、正しくダウンロード/表示されたページと誤ってダウンロード/表示されたページが生成されます。すべてのリソースをダウンロードできたかどうかはランダムです。 –

関連する問題