无法加载文件或程序集“ System.Web”或其依赖项之一。访问被拒绝

| 运行.NET Web应用程序时,出现未知的EventLog错误。 该应用程序基本上从数据库读取,然后从磁盘读取(读取文件大小,然后写回到数据库)。 我已经在工作站(IISExpress)和其他服务器(带有IIS7的Windows 2008)上启动并正常运行了该应用程序 但是,当我在带有IIS6的2003 R2服务器上运行它时,我会感到有些奇怪。 IIS应用程序启动并没有报告任何错误,但是当我尝试访问该网页时,出现一个“服务器应用程序不可用”,并且服务器上的EventLog给了我这个转储:
Event Type: Error
Event Source:   ASP.NET 4.0.30319.0
Event Category: None
Event ID:   1325
Date:       24.05.2011
Time:       13:29:11
User:       N/A
Description:
Failed to initialize the AppDomain:/LM/W3SVC/1309226359/Root

Exception: System.IO.FileLoadException

Message: Could not load file or assembly \'System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\' or one of its dependencies. Access is denied.

StackTrace:    at System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
at System.Reflection.RuntimeAssembly.nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
at System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection, Boolean suppressSecurityChecks)
at System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection)
at System.Activator.CreateInstance(String assemblyName, String typeName, Boolean ignoreCase, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes, Evidence securityInfo, StackCrawlMark& stackMark)
at System.Activator.CreateInstance(String assemblyName, String typeName)
at System.AppDomain.CreateInstance(String assemblyName, String typeName)
at System.AppDomain.InternalCreateInstanceWithNoSecurity(String assemblyName, String typeName)
at System.AppDomain.InternalCreateInstanceWithNoSecurity(String assemblyName, String typeName)
at System.Activator.CreateInstance(AppDomain domain, String assemblyName, String typeName)
at System.Web.Hosting.ApplicationManager.CreateAppDomainWithHostingEnvironment(String appId, IApplicationHost appHost, HostingEnvironmentParameters hostingParameters)
at System.Web.Hosting.ApplicationManager.CreateAppDomainWithHostingEnvironmentAndReportErrors(String appId, IApplicationHost appHost, HostingEnvironmentParameters hostingParameters)
该应用程序继续在IIS中运行。该IIS还托管了许多其他站点,没有任何问题。是的,该应用程序设置为在.NET 4上运行,并且服务器托管其他.NET 4应用程序也没有任何问题。 据我所知,它无法加载System.Web程序集,但是我不确定这怎么可能... 这是该应用程序的web.config:
<?xml version=\"1.0\"?>
<configuration>
    <system.web>
        <globalization culture=\"nb-NO\"/>
        <compilation debug=\"true\" targetFramework=\"4.0\">
            <assemblies>
                <add assembly=\"System.Data.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089\"/>
            </assemblies>
            </compilation>
        <customErrors mode=\"Off\"></customErrors>
        <xhtmlConformance mode=\"Strict\"/>
        <httpRuntime requestValidationMode=\"2.0\"/>
    </system.web>
    <system.webServer>
        <modules runAllManagedModulesForAllRequests=\"true\"></modules>
    </system.webServer>
</configuration>
    
已邀请:
这可能是由于Web应用程序文件夹中的文件系统权限不足引起的。 我通过向Web根目录和所有子级授予
ASPNET
Network Service
帐户
Read & Execute
List Folder Contents
权限来解决相同的症状。     
Lachlan Roche的回答对我有用。具体来说,我将对Web应用程序文件夹的“完全控制”权限授予了LOCAL_MACHINE \\ Users和LOCAL_MACHINE \\ IIS_IUSRS,其中LOCAL_MACHINE是我的本地计算机的域。我没有检查这两个组是否都需要完全访问权限,因此您可能不需要授予这两个组的访问权限。 我的系统是带有IIS 7.5.7600.16385和Visual Studio 12的Windows 7 Enterprise     

要回复问题请先登录注册