我在VS 2010中使用旧的WCF框架开发了许多内部REST接口。它生成帮助页面的能力对于DEV和QA平台来说很方便,但对于生产版本,很容易禁用生成这些帮助页面位于 web.config 文件中:
<standardEndpoint name="" helpEnabled="false" automaticFormatSelectionEnabled="true"/>
我现在正在转而使用WebAPI框架(目前在VS 2012上使用版本1),但关闭此功能似乎并不简单(即我无法找到任何内容)有关如何在web.config文件中执行此操作的信息)。
当然,我可以在代码本身内手动执行此操作,但肯定有更简单的方法;类似于WCF如上所述的做法。我想使用web.config文件方法,因为我已经为其他设置准备了web.release.config转换文件。
对此最佳做法的任何想法都将不胜感激。
答案 0 :(得分:7)
打开Global.asax.cs,修改您的代码,如下面的代码段:
#if DEBUG
AreaRegistration.RegisterAllAreas();
#endif
由于帮助页面位于名为“HelpPage”的区域中,因此我们可以通过发布或生产环境中的上述代码忽略它。
答案 1 :(得分:6)
对于基于web.config的启用或禁用helppage,Web API没有开箱即用的支持。
您可以考虑的一些选项:
由于HelpPage安装为MVC区域,因此在部署时
您只需排除此HelpPage
文件夹。
创建一个操作过滤器,按照此处的建议返回404:Conditionally disable ASP.NET MVC Controller
注意:对于上述情况,如果您使用的是默认的Web API模板,那么您需要在导航栏中显示/不显示Help
链接的其他步骤。
答案 2 :(得分:4)
您可以使用指令#if DEBUG在realase中隐藏代码
答案 3 :(得分:1)
如果有人偶然发现了这个问题,我就是这样做的。
我将以下应用设置添加到基本Web.config文件中:
<add key="ExcludeHelpPage" value="false" />
然后我在LIVE或RELEASE配置文件中转换了这个值,如下所示:
<add key="ExcludeHelpPage" value="true" xdt:Transform="Replace" xdt:Locator="Match(key)" />
然后我将以下代码添加到我的WebApiConfig.Register方法的末尾:
if (Convert.ToBoolean(System.Configuration.ConfigurationManager.AppSettings["ExcludeHelpPage"]))
{
config.Routes.IgnoreRoute("help", "help");
}
这将使ExcludeHelpPage配置的帮助页面不可用。
答案 4 :(得分:1)
我的禁用Uncaught DOMException: Failed to execute 'querySelector' on 'Element': '#58d3ba2dfc21ab4b4dc7199f-ade55c26e70e4' is not a valid selector.
at http://localhost:8585/client/dev/assets/js/clientAccount/directives/player.js:5:12043 (anonymous) @ player.js:5 player.js:5 Uncaught DOMException: Failed to execute 'querySelector' on 'Element': #58d5fa103f2bba6af0327842-85fa6e4830107' is not a valid selector. at http://localhost:8585/client/dev/assets/js/clientAccount/directives/player.js:5:12043
控制器的解决方案:
ApiController
)#if DEBUG
拦截调用并检查功能切换(功能标记); ExecuteAsync
代码:
HTTP 410 GONE
答案 5 :(得分:1)
将Farb和Soeholm的答案结合在一起,将不会显示“帮助”页面,并且会抛出404而不是500。
在Global.asax.cs
#if DEBUG // Make help page unavailable on release builds
AreaRegistration.RegisterAllAreas();
#endif
,然后在WebApiConfig.Register
#if !DEBUG
config.Routes.IgnoreRoute("help", "help"); // Make help page, which is now unavailable on release builds, throw a 404 instead of a 500.
#endif
只有我不使用DEBUG,我对其进行了设置,并根据部署的位置使用xml转换对其进行了更改。