Asp.net mvc 4 如何注册已在区域中创建的控制器

Asp.net mvc 4 如何注册已在区域中创建的控制器,asp.net-mvc-4,asp.net-web-api,Asp.net Mvc 4,Asp.net Web Api,我正在使用MVC4的WEB API公开一个控制器 最初,我创建了一个MVC4WebAPI项目,将该项目设置为不打开任何网页,等待外部应用程序调用URL(WEBAPI)。VS2010中的项目设置为从IIS7 Express运行,而不是从VS2010的开发服务器运行。这工作正常,浏览器提示我下载文件。这对我来说没问题,因为浏览器不知道如何处理返回的数据(原始文本) 接下来,我在MVC4项目区域中创建了一个区域,然后添加了一个控制器(WebAPI类型) 然后我再次运行该项目,并在浏览器中输入URL(W

我正在使用MVC4的WEB API公开一个控制器

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

接下来,我在MVC4项目区域中创建了一个区域,然后添加了一个控制器(WebAPI类型)

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


Ed.

默认情况下,DefaultHttpControllerFactory不处理区域。要获得此功能,您必须编写定制的HttpControllerFactory


您可以在文章中找到如何执行此操作。虽然可以将WebApi控制器放置在不同的区域,但ASP.NET MVC 4 RC仍会将这些APIController视为它们都位于同一名称空间中。这是DefaultHttpControllerSelector的一个限制,它负责选择适当的ApiController

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


您使用的URL是什么?你的地区名是什么?