资源并不总是在IIS 7.5中托管的MVC3应用程序中下载

时间:2011-11-11 00:37:15

标签: asp.net-mvc-3 forms-authentication iis-7.5 windows-authentication

我在Windows Server 2008 R2上的IIS 7.5中托管了一个MVC3 Web应用程序。该站点支持Windows身份验证;访问该站点时会显示登录提示。然后使用表单身份验证进行二级登录。 (重点是将网站隐藏起来,等等。)

如果我转到该站点,请传递Windows身份验证登录提示,然后查看登录页面(Forms Authentication),某些资源可能加载也可能不加载。例如,可能无法加载CSS文件或JavaScript文件。如果我点击刷新(有时需要几次),丢失的文件就可以了。如果我不断刷新,我可以一遍又一遍地重现这个错误。有时会加载所有资源,有时则不加载。

  • 如果我删除Windows身份验证部分,问题就会消失 - 网站每次都会加载完美。
  • 我不认为它可能是一个权限问题,因为资源是 有时加载得当。
  • 它似乎不是一个缓存问题,因为它在清空浏览器缓存之前和之后都会发生。
  • 这不是特定于浏览器的问题,因为我已经在IE和Chrome中重现了它。

修改1:当我查看显然缺少的资源时,在Chrome中,我看到的是返回登录页面而不是我期望的CSS或JavaScript内容。

编辑2:我已启用对Css,图像和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>

1 个答案:

答案 0 :(得分:0)

因为它有时会起作用,所以当你进行身份验证时它是否有效? 当请求失败时,请确认您已通过身份验证,因此至少可以将其排除在外