【问题标题】:web api in an external assembly under asp.net application在 asp.net 应用程序下的外部程序集中的 web api
【发布时间】:2013-04-30 13:19:07
【问题描述】:

我有一组包含在 Web 应用程序中的 Web API。

我正在尝试将它们分离到网络应用的发布文件夹下的新 dll 中。

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

但我需要将最初位于 Web 应用程序的 Application_Start() 内部的初始化代码(如 Ninject 初始化和路由寄存器)放入新的 dll 中。我该怎么做才能在第一次调用 api 之前调用相关代码?

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

【问题讨论】:

    标签: asp.net asp.net-web-api


    【解决方案1】:

    我认为在外部组件中注册的路由和一些 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});
    

    【讨论】:

    • 你可以在 global.asax 内部或外部调用初始化的东西。无论如何,当您创建任何外部初始化逻辑时,您应该从 Global.asax 的 Application_Start 调用它,这意味着逻辑可以在外部,但例如路由应该在那里初始化
    猜你喜欢
    • 1970-01-01
    • 2014-04-30
    • 2021-02-19
    • 1970-01-01
    • 2011-02-02
    • 2011-02-07
    • 2023-02-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多