发布时应如何排除控制器

本文关键字:排除 控制器 布时应 何排除 | 更新日期: 2023-09-27 18:28:18

我有一个.NET MVC项目,其中包括一个UnitTest控制器,用于对我的JavaScript代码运行Jasmine测试。然而,我不希望在我发布网站时提供这些信息。

我正在考虑几种方法来做这件事,但我不确定什么是最好的。

  • 使用将要引入的授权属性来禁止访问它
  • 实际上从可用路径的集合中删除控制器

我会使用这个(#IF DEBUG)的编译器指令来轻松地将事物分离。老实说,我认为移除控制器是更好的选择,但我不确定这会走向何方。可能是Global.cs文件?

如果有任何建议,我将不胜感激。如果禁止访问控制器是最好的解决方案,那也没关系,而且我可以自己轻松实现。我只是觉得必须有更好的方法。

发布时应如何排除控制器

您可以有条件地忽略路由:

#if !DEBUG
routes.IgnoreRoute("UnitTest/{*pathInfo}")
#endif

尽管这与您建议的有条件地移除控制器本身没有太大区别。

如果您使用Web Deploy进行发布,我认为在这一步执行它将是一个挑战,因为在发布时它已经在程序集中了。

但是,如果您希望在运行时对其进行检查,如您所述。一种方法是拒绝在生产环境中访问控制器。可以使用web.config转换,或使用authorize属性修饰控制器。或者甚至以某种方式修改路由?

但是您可以稍微修改项目文件。您可以根据条件包括/排除文件。我只想将Condition=" '$(Configuration)' == 'Debug' "添加到与项目文件中的控制器类匹配的<Compile />元素中。然后,当项目在发行版中构建时,应该排除控制器。唯一的问题是,这是一个隐藏的配置。如果控制器从项目中删除并重新读取,则需要有人记住重新应用该条件,否则它将最终发布。