在将我当前的项目上传到我们的登台服务器时,我注意到我的Asp.net MVC框架的Web.config文件包含一些名为
的程序集的引用我自己没有添加条目,但是从他们的名字猜测,我怀疑这些是由“添加单元测试”向导添加的。
问题是,在引用这些程序集的情况下,项目不会在我的登台服务器上运行,因为它无法找到相关的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文件上传到服务器上,但这似乎是违反直觉的。我还有其他选择吗?
编辑:我已阅读将配置拆分为单独部分的建议。这是一个很好的建议,但它对我在服务器上运行任何配置的直接问题没有帮助吗?
答案 0 :(得分:3)
测试使您的配置失败并打破部署的痛苦也发生在我身上。解决问题的正确方法是使用不同的配置文件进行调试,暂存和发布。
这解释了他们的所作所为,并指出了更多信息。
What are the Web.Debug.config and Web.Release.Config files for?
以下是删除违规模块的转换:
<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>
答案 1 :(得分:0)
我会分开web.config文件进行暂存和生活。
经常有许多设置需要改变以用于开发目的,例如缓存长度,安全设置,网址等。
根据我的经验,使用相同的配置是灾难的一个方法 - 需要1个开发人员更改设置以使本地工作正常,然后检查更新的文件,最终得到一个损坏的登台服务器(或可能活着!)
如果您使用构建,那么在构建过程中用web.live.config或web.staging.config替换web.config很简单。
然后你的问题就消失了。