c# – 内存HttpServer如何知道要承载哪个WebAPI项目?

c# – 内存HttpServer如何知道要承载哪个WebAPI项目?,第1张

概述我想使用流行的内存托管策略对WebAPI项目运行测试. 我的测试驻留在一个单独的项目中. 这是我测试的开始 [TestMethod] public void TestMethod1() { HttpConfiguration config = new HttpConfiguration(); config.Routes.MapHttpRoute( 我想使用流行的内存托管策略对WebAPI项目运行测试.

我的测试驻留在一个单独的项目中.

这是我测试的开始

[TestMethod]    public voID TestMethod1()    {        httpConfiguration config = new httpConfiguration();        config.Routes.MaphttpRoute(            name: "DefaultAPI",routeTemplate: "API/{controller}/{ID}",defaults: new {ID = RouteParameter.Optional});        httpServer server = new httpServer(config);        httpMessageInvoker clIEnt = new httpMessageInvoker(server)    }

客户端使用httpServer初始化,建立直接的客户端 – 服务器连接.

除了提供路由配置信息,httpServer如何知道要承载哪个WebAPI项目?

如何同时托管多个WebAPI项目?

似乎httpServer有一些魔术来定位WebAPI项目?

谢谢

解决方法 Web API依赖于一个名为IAssemblIEsResolver的服务来获取所有的程序集并扫描它们来查找实现IhttpController接口的控制器.

现在有时Web API可能无法找到您的控制器,具体取决于程序集是否已加载到当前的应用程序域.在这种情况下,您需要确保加载程序集.

看看你的示例测试代码,看起来你不是指Web API项目中的任何类型,在这种情况下,我认为Web API项目的程序集将不会被加载.

此外,您似乎在测试中再次注册路由.我建议您使用Web API项目的WebAPIConfig.Register(httpConfiguration)来执行所有注册内容.这样,您将使用与您的Web API项目相同的设置进行测试.

笔记:

>当使用内存服务器运行测试时,您的请求/响应将不会通过格式化程序的序列化/反序列化过程,这是非常危险的,因为您可能会遇到真正的问题.所以你需要确保照顾这个.很久以前,我写了一篇关于这个的博文.你可以看看here.> fiddler工具在查看原始请求/响应以诊断任何问题时非常有用.如果您正在进行内存测试,您将失去此能力.

总结

以上是内存溢出为你收集整理的c# – 内存HttpServer如何知道要承载哪个WebAPI项目?全部内容,希望文章能够帮你解决c# – 内存HttpServer如何知道要承载哪个WebAPI项目?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1239877.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存