我想使用流行的内存托管策略对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项目?的更多相关文章

  1. Swift 不完全函数第 1 部分:如何避免

    实际上,预处理并避免不完全函数能够让我们的程序无论在如何情况下都能可靠地运行。Swift有一个函数precondition就是用来干这个的:测试条件是否满足,并在不满足的情况下触发一个致命错误。事实上在Swift标准库中,几乎每个Swift程序都在间接地使用这种方式,包括了各种和precodition函数类似的断言。不完全函数前置条件会让函数中的某个参数的取值范围缩小为函数签名中指明的范围的一部分。在不完全函数中,已定义的输入值的子集称作已定义域。

  2. Android In App BIlling v3无法使用Nexus 7

    我有一个应用程序,它使用应用程序计费的新v3,它在多个设备上运行良好.唯一的例外是Nexus7,当根据Google的文档here尝试初始化帮助程序时,报告错误:这发生在2个不同的Nexus7上,每个Nexus7上都有完全独立的用户帐户.这两款设备都构建了3.10.9的Play商店,与我测试过的所有其他Nexus设备相同.鉴于图书馆v3最近的性质,只有媒体关于在线发布的内容.有人对这个有了解吗?解决方法清除GooglePlay商店的缓存和数据,然后至少启动一次GooglePlay商店.

  3. 用webAPI实现图片放大镜效果

    这篇文章主要为大家详细介绍了用webAPI实现图片放大镜效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  4. 基于CORS实现WebApi Ajax 跨域请求解决方法

    这篇文章主要介绍了基于CORS实现WebApi Ajax 跨域请求解决方法,需要的朋友可以参考下

  5. JavaScript WebAPI、DOM、事件和操作元素实例详解

    这篇文章主要给大家介绍了关于JavaScript WebAPI、DOM、事件和操作元素的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用js具有一定的参考学习价值,需要的朋友可以参考下

  6. jQuery.ajax 跨域请求webapi设置headers的解决方案

    需要通过服务器端设置响应头、正确响应options请求,正确设置 JavaScript端需要设置的headers信息方能实现,本文介绍的非常详细,具有参考借鉴价值,需要的朋友可以参考下

  7. JavaScript深入介绍WebAPI的用法

    JS分成三个大的部分:ECMAScript、DOM API、BOM API,其中:ECMAScript是让前端开发建立基本的编程思维。但是要想真正来写一个更加复杂的有交互式的页面,还需要WebAPI的支持,相当于把后端编程实现成前端交互。DOM+BOM就组成了WebAPI

  8. 如何使用基本授权从mvc调用外部api?

    我需要使用basicauth调用mvc控制器中的外部api,然后保存aspsessionid,然后我可以在下一个请求中使用它我试了很多,但没能成功

  9. windows – 如何在运行批处理文件时防止程序(.exe)失败的错误弹出消息框

    ..ClickonOKtoterminatetheprogramClickonCANCELtodebugtheprogram结果是已知的–脚本执行阻止,直到某人按下“确定”按钮.当我们谈论可能在某些无头虚拟机中自动运行的自动脚本时,可能会出现问题.有没有一种简单的方法来防止这种行为,只是让应用程序退出失败代码–而不更改程序本身的代码?当DLL丢失时,这并不能解决问题,但这种情况非常罕见,这对我来说已经足够了.

  10. php – 如何在Steam WebAPI中获取应用程序的价格?

    有没有可能通过WebAPI从Steam获取游戏的价格?

随机推荐

  1. c# – (wpf)Application.Current.Resources vs FindResource

    所以,我正在使用C#中的WPF创建一个GUI.它看起来像这样:它现在还没有完成.这两行是我尝试制作一种数据表,它们在XAML中是硬编码的.现在,我正在C#中实现添加新的水果按钮功能.我在XAML中有以下样式来控制行的背景图像应该是什么样子:因此,在代码中,我为每列col0,col1和col2创建一个图像,如果我使用以下代码,它添加了一个如下所示的新行:如你所见,它不太正确……为什么一个似乎忽略了一些属性而另一个没有?

  2. c# – 绑定DataGridTemplateColumn

    似乎我已经打了个墙,试图在DataGrid上使用DataTemplates.我想要做的是使用一个模板来显示每个单元格的两行文本.但是似乎无法以任何方式绑定列.以下代码希望显示我想做的事情.注意每个列的绑定:模板列没有这样的东西,因此,这个xaml不可能工作.我注定要将整个DataTemplate复制到每个列,只是对每个副本都有不同的约束?解决方法我不完全确定你想要做什么,但如果您需要获取整行的DataContext,可以使用RelativeSource绑定来移动视觉树.像这样:

  3. c# – 学习设计模式的资源

    最近我来到了这个设计模式的概念,并对此感到非常热情.你能建议一些帮助我深入设计模式的资源吗?

  4. c# – 是否有支持嵌入HTML页面的跨操作系统GUI框架?

    我想开发一个桌面应用程序来使用跨系统,是否有一个GUI框架,允许我为所有3个平台编写一次代码,并具有完全可脚本化的嵌入式Web组件?我需要它有一个API来在应用程序和网页之间进行交流.我知道C#,JavaScript和一些python.解决方法Qt有这样的事情QWebView.

  5. c# – 通过字符串在对象图中查找属性

    我试图使用任意字符串访问嵌套类结构的各个部分.给出以下(设计的)类:我想要从Person对象的一个实例的“PersonsAddress.HousePhone.Number”获取对象.目前我正在使用反思来做一些简单的递归查找,但是我希望有一些忍者有更好的想法.作为参考,这里是我开发的(crappy)方法:解决方法您可以简单地使用标准的.NETDataBinder.EvalMethod,像这样:

  6. c# – 文件下载后更新页面

    FamilyID=0a391abd-25c1-4fc0-919f-b21f31ab88b7&displaylang=en&pf=true它呈现该页面,然后使用以下元刷新标签来实际向用户提供要下载的文件:你可能需要在你的应用程序中做类似的事情.但是,如果您真的有兴趣在文件完全下载后执行某些操作,那么您的运气不佳,因为没有任何事件可以与浏览器进行通信.执行此操作的唯一方法是上传附件时使用的AJAXupload.

  7. c# – 如何在每个机器应用程序中实现单个实例?

    我必须限制我的.net4WPF应用程序,以便每台机器只能运行一次.请注意,我说每个机器,而不是每个会话.我使用一个简单的互斥体实现单实例应用程序,直到现在,但不幸的是,这样一个互斥是每个会话.有没有办法创建机器互连,还是有其他解决方案来实现每个机器应用程序的单个实例?

  8. c# – WCF和多个主机头

    我的雇主网站有多个主机名,都是同一个服务器,我们只是显示不同的皮肤来进行品牌宣传.不幸的是,在这种情况下,WCF似乎不能很好地工作.我试过overridingthedefaulthostwithacustomhostfactory.这不是一个可以接受的解决方案,因为它需要从所有主机工作,而不仅仅是1.我也看过thisblogpost,但是我无法让它工作,或者不是为了解决我的问题.我得到的错误是“这

  9. c# – ASP.NET MVC模型绑定与表单元素名称中的虚线

    我一直在搜索互联网,试图找到一种方式来容纳我的表单元素的破折号到ASP.NET的控制器在MVC2,3或甚至4中的默认模型绑定行为.作为一名前端开发人员,我更喜欢在我的CSS中使用camelCase或下划线进行破折号.在我的标记中,我想要做的是这样的:在控制器中,我会传入一个C#对象,看起来像这样:有没有办法通过一些正则表达式或其他行为来扩展Controller类来适应这种情况?我讨厌这样的事实,我必须这样做:甚至这个:思考?

  10. c# – 用户界面设计工具

    我正在寻找一个用户界面设计工具来显示文档中可能的GUI.我不能生成代码.我知道MicrosoftVisio提供了一个功能.但有什么办法吗?您使用哪种软件可视化GUI?

返回
顶部