Не удалось загрузить файл или сборку ‘System.Web’ или одна из его зависимостей. Доступ запрещен

#exception #iis-6 #.net-assembly #access-denied

#исключение #iis-6 #.net-сборка #доступ запрещен

Вопрос:

Я получаю неизвестную мне ошибку журнала событий при запуске веб-приложения .NET.

Приложение в основном считывает данные из базы данных, а затем с диска (считывает размеры файлов, а затем записывает обратно в базу данных).

Я запустил приложение без проблем на своей рабочей станции (IISExpress) и на другом нашем сервере (Windows 2008 с IIS7)

Но когда я запускаю его на нашем сервере 2003 R2 с IIS6, я получаю некоторое странное поведение. Приложение IIS запускается и не сообщает ничего неправильного, но когда я пытаюсь получить доступ к веб-странице, я получаю сообщение «Серверное приложение недоступно», а журнал событий на сервере выдает мне этот дамп:

 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, StackCrawlMarkamp; stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
at System.Reflection.RuntimeAssembly.nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMarkamp; stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
at System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, StackCrawlMarkamp; stackMark, Boolean forIntrospection, Boolean suppressSecurityChecks)
at System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMarkamp; 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, StackCrawlMarkamp; 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.

Из того, что я могу сказать, он не может загрузить систему.Веб-сборка, но я не уверен, как это вообще возможно…

Вот 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>
  

Ответ №1:

Это может быть вызвано недостаточными разрешениями файловой системы в папке вашего веб-приложения.

Я устранил те же симптомы, предоставив ASPNET и Network Service учетным записям Read amp; Execute и List Folder Contents разрешениям веб-корня и всем дочерним элементам.

Ответ №2:

Ответ Лахлана Роша сработал для меня. В частности, я предоставил полный контроль над папкой моего веб-приложения LOCAL_MACHINE Users и LOCAL_MACHINE IIS_IUSRS, где LOCAL_MACHINE был доменом моей локальной машины. Я не проверял, нужен ли полный доступ обеим группам, поэтому вам, вероятно, не нужно предоставлять доступ к обеим.

Моя система — Windows 7 Enterprise с IIS 7.5 и Visual Studio 12