Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
asp.net应用程序下外部程序集中的web api_Asp.net_Asp.net Web Api - Fatal编程技术网

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

asp.net应用程序下外部程序集中的web api,asp.net,asp.net-web-api,Asp.net,Asp.net Web Api,我有一套包含在web应用程序中的web API 我正在尝试将它们分离到web应用程序发布文件夹下的新dll中 分离后,使用以下路由代码,单个api调用成功 但是我需要像Ninject initialization和routing register这样的初始化代码,它们最初位于web应用程序的应用程序_Start()中,然后放入新的dll中。如何才能在第一次api调用之前调用相关代码 routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "

我有一套包含在web应用程序中的web API

我正在尝试将它们分离到web应用程序发布文件夹下的新dll中

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

但是我需要像Ninject initialization和routing register这样的初始化代码,它们最初位于web应用程序的应用程序_Start()中,然后放入新的dll中。如何才能在第一次api调用之前调用相关代码

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

我认为在外部Assembly和一些nInject代码中注册路由不会有任何问题

但问题可能是当您的控制器在外部组件中时。请在此详细阅读:

将控制器放在一个单独的程序集中非常简单。你只需要更新你的路线登记,告诉他们在哪里可以找到管制员

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});

但是,在调用第一个api之前,我现在应该在dll中的何处/如何调用初始化内容,例如ninject初始化…最初在web应用程序内部调用的东西\u在web应用程序内部启动您可以在global.asax内部或外部调用初始化内容。无论如何,当您创建任何外部初始化逻辑时,您应该从应用程序调用它。\u Start from Global.asax,这意味着逻辑可以在外部,但例如路由应该在那里初始化