Почему простой веб-сайт asp.net mvc требует полного доверия
Я создал очень простой веб-сайт asp.net mvc (он не использует идентичность asp.net, структуру сущностей, а также не использует базу данных). Это ссылки:
и web.config
<configuration>
<appSettings>
<add key="webpages:Version" value="3.0.0.0" />
<add key="webpages:Enabled" value="false" />
<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
</appSettings>
<system.web>
<compilation debug="true" targetFramework="4.5.2" />
<httpRuntime targetFramework="4.5.2" />
</system.web>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" culture="neutral" publicKeyToken="30ad4fe6b2a6aeed" />
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.Optimization" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="1.1.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="0.0.0.0-1.5.2.14234" newVersion="1.5.2.14234" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-5.2.3.0" newVersion="5.2.3.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
<system.codedom>
<compilers>
<compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701" />
<compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:14 /nowarn:41008 /define:_MYTYPE=\"Web\" /optionInfer+" />
</compilers>
</system.codedom>
<system.net>
<mailSettings>
<smtp deliveryMethod="Network" from="info@domain.com">
<network host="smtp.domain.com" userName="info@domain.com" password="password" port="25" />
</smtp>
</mailSettings>
</system.net>
</configuration>
Я опубликовал его на сервере общего хостинга (с IIS 8.5) и получил исключение безопасности:
Описание: приложение попыталось выполнить операцию, не разрешенную политикой безопасности. Чтобы предоставить этому приложению необходимые разрешения, обратитесь к системному администратору или измените уровень доверия приложения в файле конфигурации.
Вопрос в том, почему этот простой сайт требует полного доверия? Я не понимаю, если это требует полного доверия, чем любой сайт asp.net mvc должен требовать полного доверия.
ОБНОВЛЕНИЕ: полное доверие требуется с новыми возможностями.net Framework. Я удалил пакеты Microsoft.CodeDom.Providers.DotNetCompilerPlatform и Microsoft.Net.Compilers и теперь он работает.
2 ответа
Согласно этому сообщению от сотрудника Microsoft (ответил 20 июня '13):
Мы удаляем поддержку Medium Trust из разрабатываемых нами фреймворков (MVC, WebAPI, SignalR и т. Д.). В дальнейшем приложения, построенные на этих платформах, потребуют полного доверия.
Изменить 26 мая 2015 года. Платформа .NET Framework в целом утратила частичное доверие, и клиентам рекомендуется не полагаться на нее как на границу безопасности.
Поэтому неудивительно, что требуется полное доверие, поскольку частичное доверие теперь полностью устарело.
Это может помочь.
https://support.microsoft.com/en-us/kb/555466
Возможно, вам потребуется создать пул приложений с уровнями безопасности, установленными для вашего приложения. Раздел, предложенный для изменения, находится в machine.config