问题描述
|
在将当前项目上传到暂存服务器时,我注意到Asp.net MVC框架的Web.config文件包含一些对称为的程序集的引用
Hostadapters.AspNetAdapter
QualityTools.Common
QualityTools.ExecutionCommon
QualityTools.Resource
我没有自己添加条目,但是从它们的名称猜测,我怀疑这些是通过“添加单元测试”向导添加的。
问题是,引用这些程序集后,该项目无法在我的登台服务器上运行,因为它找不到相关的DLL。他们的路径被硬编码到
Web.config:
<httpModules>
<add name=\"HostAdapter\" type=\"Microsoft.VisualStudio.TestTools.HostAdapter.Web.HttpModule,Microsoft.VisualStudio.QualityTools.HostAdapters.ASPNETAdapter,Version=10.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a\" />
</httpModules>
<dependentAssembly>
<assemblyIdentity name=\"Microsoft.VisualStudio.QualityTools.HostAdapters.ASPNETAdapter\" publicKeyToken=\"b03f5f7f11d50a3a\" culture=\"neutral\" />
<codeBase version=\"10.0.0.0\" href=\"file:///C:/Program%20Files%20(x86)/Microsoft%20Visual%20Studio%2010.0/Common7/IDE/PrivateAssemblies/Microsoft.VisualStudio.QualityTools.HostAdapters.ASPNETAdapter.DLL\" />
</dependentAssembly>
我是否认为这些程序集与单元测试相关?
当我尝试删除其中一些条目时,服务器响应错误403 \“访问被拒绝:禁止。\”,这可能是什么意思,如何避免呢?
我可以简单地将引用的DLL文件上载到服务器上的某个位置,但这似乎违反直觉。我还有其他选择吗?
编辑:我已经阅读了将配置拆分为单独部分的建议。这是一个很好的建议,但是它对我如何立即解决服务器上的任何配置问题没有直接帮助我。
解决方法
我将有单独的web.config文件进行分期和现场直播。
通常出于开发目的需要更改许多设置,例如缓存长度,安全设置,URL等
根据我的经验,使用相同的配置是灾难的根源-需要一名开发人员更改设置以使某些内容在本地运行,然后检入更新的文件,最终导致损坏的登台服务器(或可能处于运行状态) !
如果使用构建,则在构建过程中用web.live.config或web.staging.config替换web.config很简单。
您的问题就消失了。
, 令我感到痛苦的是,测试也破坏了您的配置并破坏了您的部署。解决此问题的正确方法是使用不同的配置文件进行调试,暂存和发布。
这说明了它们的作用并指向更多信息。
什么是Web.Debug.config和Web.Release.Config文件?
以下是删除有问题的模块的转换:
<system.web>
<httpModules>
<add name=\"HostAdapter\" xdt:Locator=\"Match(name)\" xdt:Transform=\"Remove\" />
</httpModules>
</system.web>
<system.webServer>
<modules>
<add name=\"HostAdapter\" xdt:Locator=\"Match(name)\" xdt:Transform=\"Remove\"/>
</modules>
</system.webServer>