2012-07-16 2 views
0

Я хочу настроить проект MVC, чтобы я мог build a multi-file assembly. Мое намерение, как доказательство концепции, состоит в том, чтобы сделать root web.config частью сборки MVC. Обоснованием для этого было бы предотвратить подделку файла web.config.Сборка нескольких файлов для проекта ASP.NET (MVC)

В разделе предполагается, «я должен изменить» проекта MVC здесь:

<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> 
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" /> 
<Target Name="MvcBuildViews" AfterTargets="AfterBuild" Condition="'$(MvcBuildViews)'=='true'"> 
    <AspNetCompiler VirtualPath="temp" PhysicalPath="$(WebProjectOutputDir)" /> 
</Target> 

Я не помню, как я могу «влияние» импорта. Например, есть ли свойство, которое я могу установить, чтобы сделать шаг сборки csc, а не сборки? И даже если бы я это достиг, мне нужен список (например, itemGroup) полученного модуля (ов), чтобы я мог передать это в компоновщик (либо «csc/out», либо «al/out/target»).

Кто-нибудь сделал это раньше? Указатели?

+0

Я не вижу, как сетевые модули будут препятствовать тому, чтобы web.config подделывал? – vcsjones

+0

Зачем хранить что-либо в файле web.config, если вы не хотите, чтобы люди меняли его? Почему бы просто не жестко указать свой собственный статический класс со значениями, которые вы хотите? – Josh

+0

@vcsjones: .net/fusion предотвратит загрузку (сильной именованной) сборки, которая имеет модифицированный хеш; хэш состоит из всех частей файла. –

ответ

1

Вы можете разделить все данные из web.config в отдельный файл данных, который можно зашифровать. Ваш web.config будет выглядеть следующим образом:

<?xml version="1.0"?> 
<configuration> 
    <configSections> 
    <sectionGroup name="system.web" type="System.Web.Configuration.SystemWebSectionGroup, System.Web, Version=%ASSEMBLY_VERSION%, Culture=neutral, PublicKeyToken=%MICROSOFT_PUBLICKEY%"> 
      <section name="authentication" type="System.Web.Configuration.AuthenticationSection, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" allowDefinition="MachineToApplication" /> 
      <!-- Other system.web sections --> 
     </sectionGroup> 
    </configSections> 
    <system.web configSource="OtherFile.config"/> 
</configuration> 

Затем можно шифровать «Other File», поэтому он не может быть подделан.

<?xml version="1.0" encoding="utf-8" ?>  
<system.web> 
    <machineKey validationKey="D61B3C89CB33A2F1422FF158AFF7320E8DB8CB5CDA1742572A487D94018787EF42682B202B746511891C1BAF47F8D25C07F6C39A104696DB51F17C529AD3CABE" 
     decryptionKey="FBF50941F22D6A3B229EA593F24C41203DA6837F1122EF17" /> 
    </system.web> 

См MS ​​документации по Шифрование данных Раздел: http://msdn.microsoft.com/en-us/library/dtkwfdky.aspx

Это не вкладывается, но запутывается за читаемый текст человека. Надеюсь, что это поможет!

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