2016-06-27 5 views
4

Я построил действительно простой веб-сайт asp.net mvc (он не использует идентификатор asp.net, структуру сущности, а также не использует какую-либо базу данных). Эти ссылки:Почему простой веб-сайт asp.net mvc требует полного доверия

enter image description here

и 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="[email protected]"> 
     <network host="smtp.domain.com" userName="[email protected]" password="password" port="25" /> 
     </smtp> 
    </mailSettings> 
    </system.net> 
</configuration> 

я опубликовал его на общий хостинг-сервер (с IIS 8.5), и получил исключение безопасности:

Описание: Приложение попыталось выполнить операцию, не разрешенную политикой безопасности. Чтобы предоставить этому приложению требуемое разрешение, обратитесь к своему системному администратору или измените уровень доверия приложения в файле конфигурации.

Вопрос в том, почему этот простой сайт требует полного доверия? Я не понимаю, если это требует полного доверия, чем любой веб-сайт asp.net mvc требует полного доверия.

ОБНОВЛЕНИЕ: Полное доверие требуется с новыми функциями инфраструктуры .net. Я удалил пакеты Microsoft.CodeDom.Providers.DotNetCompilerPlatform и Microsoft.Net.Compilers, и теперь это работает.

+0

он был опубликован на общем сервере хостинга, версия iis должна быть 8.5 – DevT

+0

Этот [post] (http://stackoverflow.com/questions/557713/why-does-my-net-application-require- полное доверие) может быть полезно –

+0

@ TasosK. Я прочитал об этом, но мой web.config не содержит конфигураций, как вы можете видеть в главном сообщении (я опубликовал web.config). – DevT

ответ

2

По this post from a Microsoft employee (ответил 20 июня '13):

Мы снимаем поддержку Medium Trust из рамок, которые мы разрабатываем (MVC, WebAPI, SignalR и т. Д.). Вперёд, приложения, построенные на этих фреймах, будут иметь , требующие полного доверия.

Редактировать 26 мая 2015 г.: . В .NET Framework в целом устарели частичное доверие, и клиентам не рекомендуется полагаться на него как на границу безопасности.

Таким образом, не должно удивляться, что требуется полное доверие, поскольку частичное доверие теперь полностью устарело.

+0

Да, это правильно. На моем веб-сайте требуется полное доверие, потому что новые функции .net Framework, по сути, я удалил пакеты Microsoft.CodeDom.Providers.DotNetCompilerPlatform и Microsoft.Net.Compilers, теперь сайт больше не требует полного доверия. – DevT

0

Это может помочь.

https://support.microsoft.com/en-us/kb/555466

Вы, возможно, потребуется создать пул приложений с уровнем безопасности, установленным в соответствии с вашим приложением. Раздел предложил изменить это в machine.config

+0

Я знаю об этом, но вопрос в том, почему действительно простое приложение asp.net mvc требует полного доверия. – DevT