我想调整我的MVC项目,以便我可以build a multi-file assembly。作为概念证明,我的意图是使根web.config成为MVC程序集的一部分。这样做的理由是防止篡改web.config文件。
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 :(得分: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>
然后你可以加密“其他文件”,这样它就不会被篡改。
<?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
它不会嵌入,而是模糊超出人类可读的文本。 希望有所帮助!