在asp.net应用程序中的外部程序集中的web api

问题描述:

我有一组Web API包含在一个web应用程序中。在asp.net应用程序中的外部程序集中的web api

我试图将它们分离到一个新的dll下的Web应用程序的发布文件夹。

分离后,使用以下路由代码,单个api调用成功。

但我需要初始化代码,如Ninject初始化和路由寄存器,它们原本位于Web应用程序的Application_Start()内部,以便放入新的dll中。我该怎么做才能在第一个API调用之前调用相关的代码呢?

routes.MapHttpRoute(
name: "DefaultApi", 
routeTemplate: "api/{controller}/{id}", 
defaults: new { id = RouteParameter.Optional } 
); 

我认为这将不是一个问题,所有路由注册在外部assebmly和一些nInject代码也。

但是,您的控制器在外部装配时可能会遇到麻烦。请在这里详细了解它: http://www.strathweb.com/2012/06/using-controllers-from-an-external-assembly-in-asp-net-web-api/

把你的控制器放在一个单独的程序集中是非常简单的。你只需要更新你的路线注册,告诉他们在哪里寻找控制器。

routes.MapRoute(name: "Default", url: "{controller}/{action}/{id}", 
       namespaces: new[] {"[Namespace of the Project that contains your controllers]"}, 
       defaults: new {controller = "Home", action = "Index", id = UrlParameter.Optional}); 
+0

但这里的/我应该怎么现在调用初始化的东西一个DLL中的第一个API之前调用,像ninject初始化......这最初被称为内的Application_Start Web应用程序 – Lys 2013-04-30 14:36:31

+0

可以调用初始化里面的东西在global.asax内部或外部。无论如何,当你创建任何外部初始化逻辑时,你应该从Global.asax的Application_Start中调用它,这意味着逻辑可以在外面,但例如路由应该在那里初始化 – Regfor 2013-04-30 14:39:01