I have developed a number of internal REST interfaces using the older WCF framework in VS 2010. The ability for it to generate help pages was handy for DEV and QA platforms, but for a production release it was easy to disable the generation of these help pages in the web.config file:
<standardEndpoint name="" helpEnabled="false" automaticFormatSelectionEnabled="true"/>
I am now moving on to use the WebAPI framework instead (currently version 1 on VS 2012), but it doesn't appear to be as trivial to turn this feature off (i.e. I can't find any information on how to do this in a web.config file).
Certainly I can go ahead and do this by hand within the code itself, but surely there's an easier way; something akin to how WCF did it as described above. I'd like to use the web.config file approach since I already have the web.release.config transform files in place for other settings.
Any thoughts on best practices on this would be appreciated.
You can use directive #if DEBUG to hide your code in realase
Open the Global.asax.cs,modify your code like the following snippet code:
Because the help page is in the Area named 'HelpPage',so we can ignore it by the above code in the release or production environment.
In case someone stumbles upon this question, here's how I managed to do it.
I added the following app setting to the base Web.config file:
I then transformed this value in my LIVE or RELEASE config file, like this:
Then I added the following code to the end of my WebApiConfig.Register method:
This will make the help page unavailable for configs with ExcludeHelpPage set to true.
My solution for disabling
ApiController
controller:#if DEBUG
)ExecuteAsync
intercepts the invocation and checks feature toggle (feature flag);HTTP 410 GONE
The code:
Web API doesn't have an out of box support with respect to web.config based enabling or disabling of helppage.
Some options you can consider:
Since HelpPage is installed as an MVC area, when deploying to production you could just exclude this
HelpPage
folder.Create an action filter which returns 404 as suggested here: Conditionally disable ASP.NET MVC Controller
NOTE: for the above cases, if you are using the default Web API template, then yeah you would need additional step of display/not display the
Help
link from the navigation bar.