我的测试驻留在一个单独的项目中.
这是我测试的开始
[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项目?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)