Почему простой веб-сайт 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=\&quot;Web\&quot; /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

Другие вопросы по тегам