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>
サーバーから返される応答を確認しましたか?例えば。 FiddlerまたはFirebugを使用して、これらのリクエストにどのようなHTTPステータスコードが表示されるかを確認します。 –
はい、上記の**編集**に追加されました。 –
静的リソースの代わりにログインページが返されることがわかります。これは、最初の障壁を過ぎていることを意味します.Windows Authentication部分です。したがって、ASP.NET MVCアプリケーション自体が、ユーザーをログインページにリダイレクトすることによって、これらのリソースへのアクセスを保護しているようです。ただし、Windows認証の部分を無効にすると、これがなぜ機能するのか説明できません。実際にFiddlerで実際のリクエストと応答を見て、それをさらに診断する必要があります。 –