Asp.Net MVC - SecurityException: источник не найден, но не удалось найти некоторые или все журналы событий. Недоступные журналы: безопасность
Поэтому я развертываю свой веб-сайт через AWS Elastic Beanstalk(с присоединенным к нему экземпляром AWS RDS), используя расширение AWS Toolkit в Visual Studio. Мое веб-приложение использует как службу sensenet, так и компонент веб-страниц sensenet. Службы sensenet являются обязательным компонентом, который должен существовать для использования другими компонентами sensenet. Компонент sensnet webpages предоставляет пользователю графический интерфейс администратора, и это то, что отображается при каждом посещении сайта.
Моя проблема - это исключение безопасности, которое возникает каждый раз, когда я захожу на свой веб-сайт (эта проблема не возникает при запуске через localhost).
Server Error in '/' Application.
Security Exception
Description: The application attempted to perform an operation not allowed by the security policy. To grant this application the required permission please contact your system administrator or change the application's trust level in the configuration file.
Exception Details: System.Security.SecurityException: The source was not found, but some or all event logs could not be searched. Inaccessible logs: Security.
Source Error:
An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.
Stack Trace:
[SecurityException: The source was not found, but some or all event logs could not be searched. Inaccessible logs: Security.]
System.Diagnostics.EventLog.FindSourceRegistration(String source, String machineName, Boolean readOnly, Boolean wantToCreate) +441
System.Diagnostics.EventLog.SourceExists(String source, String machineName, Boolean wantToCreate) +125
System.Diagnostics.EventLog.SourceExists(String source) +23
SenseNet.Diagnostics.SnEventLogger..ctor(String logName, String logSourceName) +71
SenseNet.Configuration.<>c.<.ctor>b__153_0() in E:\BuildAgent\_work\63\s\src\Storage\Configuration\Providers.cs:83
System.Lazy`1.CreateValue() +708
System.Lazy`1.LazyInitValue() +184
SenseNet.ContentRepository.RepositoryInstance.InitializeLogger() in E:\BuildAgent\_work\63\s\src\ContentRepository\RepositoryInstance.cs:350
SenseNet.ContentRepository.RepositoryInstance.DoStart() in E:\BuildAgent\_work\63\s\src\ContentRepository\RepositoryInstance.cs:130
SenseNet.ContentRepository.RepositoryInstance.Start(RepositoryStartSettings settings) in E:\BuildAgent\_work\63\s\src\ContentRepository\RepositoryInstance.cs:107
SenseNet.ContentRepository.Repository.Start(RepositoryStartSettings settings) in E:\BuildAgent\_work\63\s\src\ContentRepository\Repository.cs:55
SenseNet.Services.SenseNetGlobal.Application_Start(Object sender, EventArgs e, HttpApplication application) in E:\BuildAgent\_work\63\s\src\Services\SenseNetGlobal.cs:156
DERContentRepository.MvcApplication.Application_Start(Object sender, EventArgs e, HttpApplication application) in Global.asax.cs:12
SenseNet.Portal.Global.Application_Start(Object sender, EventArgs e) in E:\BuildAgent\_work\63\s\src\Services\Global.cs:16
Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.7.3163.0
Несколько сообщений из stackru, которые я прочитал, как эти
System.Security.SecurityException при записи в журнал событий
Источник не найден, но не удалось найти некоторые или все журналы событий. Недоступные журналы: безопасность
говорили о запуске Visual Studio с правами администратора (это не сработало) и создании раздела реестра с именем приложения. Последний подход Я почти уверен, что он будет работать при разработке, но не уверен, что он будет работать при развертывании. Есть идеи как с этим бороться при развертывании сайта?
IIS Express 10
ASP.NET MVC v4.6.2
Windows Server 2016 v1.2.0
1 ответ
Когда система запускается, она пытается инициализировать компонент регистратора. При установке по умолчанию это простой регистратор событий, который пытается записать события в журнал событий Windows - и, если соответствующий журнал не существует, он пытается создать его на лету. В некоторых средах пользователь приложения не имеет (Windows) разрешений для этого, что является нормальным.
У вас есть несколько вариантов:
- создать журнал событий вручную (см. здесь инструмент SnAdmin createeventlog)
- используйте другой регистратор, который записывает записи журнала где-то еще, а не журнал событий. Например, есть SnFileSystemEventLogger, который записывает записи в файловую систему. Чтобы настроить регистратор, вы можете использовать API построителя хранилища в вашем MvcApplication:
`` `
public class MvcApplication : SenseNet.Portal.SenseNetGlobal
{
protected override void Application_Start(object sender, EventArgs e, HttpApplication application)
{
...
}
protected override void BuildRepository(IRepositoryBuilder repositoryBuilder)
{
repositoryBuilder.UseLogger(new SnFileSystemEventLogger());
}
}