我有一个.NET MVC项目,其中包含一个UnitTest控制器,可以根据我的JavaScript代码运行Jasmine测试。但是,当我发布网站时,我不希望它可用。
我正在考虑采取一些方法来做这件事,但我不确定什么是最好的。
我将使用编译器指令(#IF DEBUG
)来轻松分离事物。老实说,我认为删除控制器将是更好的选择,但我不确定它会去哪里。可能是Global.cs文件?
我将不胜感激任何建议。如果禁止访问控制器是最好的解决方案,那很好,我可以自己轻松实现。我认为必须有更好的方法。
答案 0 :(得分:2)
您可以有条件地忽略该路线:
#if !DEBUG
routes.IgnoreRoute("UnitTest/{*pathInfo}")
#endif
虽然这与你建议的有条件地删除控制器本身没什么不同。
答案 1 :(得分:0)
如果您正在使用Web Deploy进行发布,我认为在该步骤中执行此操作将是一个挑战,因为它已经在发布时已经在程序集中。
但是如果你想在运行时检查它,正如你所说的那样。一种方法是拒绝在生产环境中访问控制器。可以使用web.config转换,或使用authorize属性修饰控制器。甚至以某种方式修改路由?
但您可以稍微修改项目文件。你可以include/exclude files depending on conditions。我只需将Condition=" '$(Configuration)' == 'Debug' "
添加到与项目文件中的控制器类匹配的<Compile />
元素中。然后,当项目在发布时构建时,应排除控制器。唯一的问题,这是一个隐藏的配置。如果控制器从项目中删除并重新读取,则有人需要记住重新应用该条件,否则它将最终发布。