1

我正在使用 MVC4 的 WEB API 来公开控制器。

最初我创建了一个MVC4 WEBAPI项目,设置项目不打开任何网页,等待外部应用程序调用URL(WEB API)。VS2010 中的项目设置为从 IIS7 Express 运行,而不是 VS2010 的 Dev Server。这工作正常,浏览器提示我下载文件。这对我来说没问题,因为浏览器不知道如何处理返回的数据(RAW TEXT)。

接下来,我在MVC4项目区创建了一个AREA,然后添加了一个控制器(WEB API类型)。

然后我再次运行该项目并在浏览器中输入 URL(WEB API)。它失败了。

埃德。

4

2 回答 2

2

DefaultHttpControllerFactory 默认情况下不适用于区域。要获得此功能,您必须编写自定义 HttpControllerFactory。

您可以在文章How to create HttpControllerFactory to support Areas中找到如何执行此操作

于 2012-03-26T20:02:31.763 回答
1

虽然可以将 WebApi 控制器放置在不同的区域中,但 ASP.NET MVC 4 RC 仍会将这些 ApiController 视为它们都驻留在同一个命名空间中。这是 DefaultHttpControllerSelector 的一个限制,它负责选择合适的 ApiController。

幸运的是,您可以注入自己的此类实现。事实上,我已经遇到过这个问题并编写了一个“区域感知”HttpControllerSelector。您可以在此处找到我关于此问题及其解决方案的博客文章:

http://blogs.infosupport.com/asp-net-mvc-4-rc-getting-webapi-and-areas-to-play-nicely/

于 2012-07-15T20:21:45.773 回答