"保留"单词可能不是这里最好的术语,但是有什么东西阻止我命名Web API控制器 DocumentationController 吗?奇怪的是,只有在Visual Studio(2012)中运行时才会出现此问题。如果我发布到本地IIS站点,它可以正常工作。
问题是尝试点击Get()
上的默认DocumentationController
方法,出于测试目的,该方法如下所示:
// GET api/documentation
public HttpResponseMessage Get()
{
return Request.CreateResponse<string>(HttpStatusCode.OK, "success");
}
在Visual Studio中运行时,将返回一个302&#34;对象移动&#34;错误,然后是404.但是,如果我将控制器重命名为DocumentationTest
或Docs
,它在VS和我的本地IIS站点中工作正常。
我也试过让这种方法只返回string
,但这并没有什么区别。
有没有理由我不能(或不应该)命名我的控制器&#34; DocumentationController&#34;?
This answer(对于ASP.NET MVC,至少)说,唯一的保留字是&#34; controller&#34;,&#34; action&#34;,&#34; area&# 34。
SOLUTION:
最终成为Web API项目中名为 Documentation 的文件夹。出于某种原因,这在VS中调试时不起作用,但在IIS上工作正常。我只是要重命名该文件夹。
答案 0 :(得分:1)
DocumentationController不是保留字,并且错误&#34; 302对象已移动&#34;不是表示已使用保留字的错误。 (如果您使用保留字,我不认为您的解决方案会编译)我建议调查WebApi.DocumentationController在您的解决方案中某处有另一个引用的可能性。
答案 1 :(得分:1)
最终成为Web API项目中名为Documentation的文件夹。它已从项目文件中排除,因此在Visual Studio中不可见,我没有立即注意到它。由于某些原因,这在Visual Studio中调试时不起作用(该文件夹仍然存在于本地),但在IIS上工作正常。我只是要重命名这个文件夹,这样它就不会与我的任何控制器发生冲突。