2016-10-30 2 views
1

У меня есть приложение ASP.NET MVC 5, которое отлично работает на машине разработки. Я опубликовал его и передал файлы в Интернете, и генерирует следующее сообщение об ошибке:Хостинг ASP.NET MVC-приложение: исключение безопасности

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: Request failed. 

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: Request failed.] 
    System.Security.CodeAccessSecurityEngine.ThrowSecurityException(RuntimeAssembly asm, PermissionSet granted, PermissionSet refused, RuntimeMethodHandleInternal rmh, SecurityAction action, Object demand, IPermission permThatFailed) +165 
    System.Security.CodeAccessSecurityEngine.ThrowSecurityException(Object assemblyOrString, PermissionSet granted, PermissionSet refused, RuntimeMethodHandleInternal rmh, SecurityAction action, Object demand, IPermission permThatFailed) +100 
    System.Security.CodeAccessSecurityEngine.CheckSetHelper(PermissionSet grants, PermissionSet refused, PermissionSet demands, RuntimeMethodHandleInternal rmh, Object assemblyOrString, SecurityAction action, Boolean throwException) +272 
    System.Security.CodeAccessSecurityEngine.CheckSetHelper(CompressedStack cs, PermissionSet grants, PermissionSet refused, PermissionSet demands, RuntimeMethodHandleInternal rmh, RuntimeAssembly asm, SecurityAction action) +55 
    System.RuntimeTypeHandle.GetTypeByName(String name, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMarkHandle stackMark, IntPtr pPrivHostBinder, Boolean loadTypeFromPartialName, ObjectHandleOnStack type) +0 
    System.RuntimeTypeHandle.GetTypeByName(String name, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean loadTypeFromPartialName) +70 
    System.RuntimeType.GetType(String typeName, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMark& stackMark) +39 
    System.Type.GetType(String typeName) +50 
    System.CodeDom.Compiler.CompilerInfo.get_IsCodeDomProviderTypeValid() +10 
    System.Web.Compilation.CompilationUtil.GetRecompilationHash(CompilationSection ps) +2090 
    System.Web.Configuration.CompilationSection.get_RecompilationHash() +107 
    System.Web.Compilation.BuildManager.CheckTopLevelFilesUpToDateInternal(Int64 cachedHash) +465 
    System.Web.Compilation.BuildManager.CheckTopLevelFilesUpToDate(Int64 cachedHash) +51 
    System.Web.Compilation.BuildManager.ExecutePreAppStart() +132 
    System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnvironmentParameters hostingParameters, PolicyLevel policyLevel, Exception appDomainCreationException) +521 

Мой хостинг предоставляет мне с панелью Настройки ASP.NET.

Мои настройки следующим образом:

Framework version: 4.0.30319.17929 
Default webpage language: C# 
CAS trust level: FULL 

Может кто-нибудь руководство мне, как к тому, что это проблема. Это приложение или хостинг?

+1

Это может быть сочетание как на самом деле. Когда вы говорите «публиковать», вы публикуете в Azure или какое-то другое решение? У вас есть доступ к пулу приложений, в котором настроено приложение? Проверьте личность процесса, в котором работает этот конкретный пул приложений. – Nikhil

+0

Это сторонний хостинг. Не лазурь. У меня нет доступа к конфигурации пула приложений. – progrAmmar

ответ

1

Большинство хостинг-провайдеров предлагают FULL Trust хостинг сейчас. MVC не принимает частичное доверие.

<system.web> 
    <trust level="Full" /> 
    </system.web> 

Если это не сработает, вы можете обратиться к своему провайдеру хостинга, если у вас нет доступа к серверу.

Что мы делаем, это запустить в нашем dev.

<system.web> 
    <trust level="Medium"/> 
</system.web> 

Изменения уровня доверия делает промежуточную среду неудачи с такой же ошибкой, показанной на виртуальном хостинге, так что вы можете исправить код, чтобы соответствовать вашему хосту. Если вы развертываете среду среднего уровня доверия, вам было бы разумно установить уровень доверия на средний уровень, чтобы сэкономить время и энергию по дороге.

link

+0

Этот уровень доверия отличается от уровня доверия CAS? Потому что у меня есть доступ к этому конфигу, и я положил его на полную. – progrAmmar

+0

А как я понимаю, что происходит. Уровни политики CAS (Code Access Security) в основном поступают из более старых систем, но больше не используются. вот ссылка, чтобы помочь вам разобраться в этом. https://msdn.microsoft.com/en-us/library/dd984947.aspx –

Смежные вопросы