C# Web API中DefaultControllerFactory的等价物是什么?

C# Web API中DefaultControllerFactory的等价物是什么?,c#,asp.net-web-api,C#,Asp.net Web Api,我们正在尝试用新的ASP.NET Web API替换以前的DefaultControllerFactory,以更好地处理REST/XML调用。搜索web总是指向实现System.web.Http.Dependencies.idependencysolver,然后处理GetService()和接口所需的其他一些方法 然而,它似乎正在缓存ApicController实例和任何新的控制器,它似乎并没有得到解决。由于性能问题,在启动期间很难提供所有可能的ApicController实例 DefaultC

我们正在尝试用新的ASP.NET Web API替换以前的DefaultControllerFactory,以更好地处理REST/XML调用。搜索web总是指向实现
System.web.Http.Dependencies.idependencysolver
,然后处理
GetService()
和接口所需的其他一些方法

然而,它似乎正在缓存ApicController实例和任何新的控制器,它似乎并没有得到解决。由于性能问题,在启动期间很难提供所有可能的ApicController实例

DefaultControllerFactory
允许提供控制器实例并缓存“命中”条目,但在无法延迟加载实例时抛出错误

是否有其他重载/控制器工厂方法需要实现?

到目前为止,搜索并没有产生任何点击率,但任何指针都会很好。谢谢您的时间。

它是由
DefaultHttpControllerActivator
实现的
IHttpControllerActivator

您可以使用以下方法替换它:

GlobalConfiguration.Configuration.Services.Replace(typeof(IHttpControllerActivator), 
        new MyOwnActivatior());
GlobalConfiguration.Configuration.Services.Replace(typeof(IHttpControllerSelector), 
        new MyOwnActivatior());

哎呀! 我的意思是
IHTTP控制器选择器


它由
DefaultHttpControllerSelector
实现

您可以使用以下方法替换它:

GlobalConfiguration.Configuration.Services.Replace(typeof(IHttpControllerActivator), 
        new MyOwnActivatior());
GlobalConfiguration.Configuration.Services.Replace(typeof(IHttpControllerSelector), 
        new MyOwnActivatior());

非常感谢。如果程序集中存在控制器,则此操作有效。但是,我们需要根据请求动态加载控制器。在这种情况下,调用不会进入控制器激活器。例如如果程序集中存在名为“CustomApicController”的类型,则此项工作。但是,似乎并没有调用控制器激活器的Create()方法。预期用途是按需查找加载控制器类型。然后可能需要替换以下一个或多个:IHttpControllerSelector(选择控制器)、IHttpControllerTypeResolver(向IHttpControllerSelector提供控制器类型列表)、iAssemblisResolver(提供程序集列表)。再见,谢谢你,米克瓦森。将尝试更多这些接口。但愿没有这么难。哎呀!我是说IHTTP控制器选择者@MikeWasson尝试了所有操作,但从未调用控制器选择器,无论在动态加载控制器程序集时执行了什么操作。尝试摆弄url/路径变量,看看调用是否可以手动转发到内部控制器。DefaultControllerFactory是beta版的,不再是RC版的,请你详细说明一下“为了更好地处理REST/XML调用?您想要处理什么?使用默认控制器工厂,可以根据需要动态加载控制器。此控制器具有使用不同API(后缀为json或xml)为xml/json格式提供服务的方法。管理实质上也是如此的等价物正成为一个问题。Web API似乎正在处理媒体格式,我们希望将它们移到这个模型中,但动态加载控制器似乎是一个问题。如果您想利用json/xsml后缀,为什么不利用UriPathExtensionMapping呢?这看起来不错,有助于解决很多映射问题。在可能的情况下,我们已将其更改为使用此机制。我也把它标记为答案。