“Web请求在未运行测试的情况下成功完成。”的处理方法。
2010-08-05 15:37
615 查看
不论是在Web项目中添加Web服务还是直接新建一个Web服务项目,在为WebMethod创建单元测试,运行测试的时候有可能抛出这样的错误信息:
如果Web应用程序是可以正确执行的,那么出现上述错误的原因则是第二种情况:未执行任何的ASP.NET页。在为一个WebMethod通过Visual Studio创建单元测试时,自动生成的代码大致如下:
按属性名来理解,HostType设定的是主机类型,AspNetDevelopmentServerHost指定的是项目的路径,而UrlToTest指定的是发送请求到WebService的Url,导致上述错误出现的问题也在此。因为HostType属性指定了主机的类型是ASP.NET,则UrlToTest属性必须可以被解析为ASP.NET页。在运行测试的时候,正是该页面向WebService发送请求。
在Visual Studio自动创建的代码中,UrlToTest的值通常是Web项目的Url,该Url默认是会指向项目中的Default.aspx页面,具体情况视ASP.NET服务器的配置而定。所以,如果你所建的项目中没有Default.aspx的话,直接运行测试的时候则会出现上述错误。所以我们必须把UrlToTest的值改成一个可被解析为ASP.NET的页。
以下属于猜测:如果HostType的值不指定为ASP.NET的话,UrlToTest也应该可以使非ASP.NET页。本人对HostType属性了解不多,这里只作简单说明,留待有兴趣的朋友自己验证。
Web 请求“http://localhost:<port>/”在未运行测试的情况下成功完成。这种情况会在为测试配置 Web 应用程序失败(处理请求时发生 ASP.NET 服务器错误)时或未执行任何 ASP.NET 页(URL 可能指向一个 HTML 页、一个 Web 服务或一个目录列表)时发生。在 ASP.NET 中运行测试要求 URL 解析为 ASP.NET 页,并且该页在 Load 事件发生之前一直正确执行。请求的响应连同测试结果一起存储在文件“WebRequestResponse_<web method name>.html”中,通常可使用 Web 浏览器打开此文件来查看其内容。
看看错误信息的说明。当中已经说出,发生这种情况有两个可能:1.配置Web应用程序失败,2.未执行任何ASP.NET页。因此,排除错误也从这两方面下手。 首先要确定Web应用程序是可以正确执行的。如何判断呢?只要该程序能被正常编译,或是能在浏览器中正常浏览该WebService即可。能被正常浏览的WebService的内容大致如下: 如果Web应用程序是可以正确执行的,那么出现上述错误的原因则是第二种情况:未执行任何的ASP.NET页。在为一个WebMethod通过Visual Studio创建单元测试时,自动生成的代码大致如下:
/// <summary> ///HelloWorld 的测试 ///</summary> [TestMethod()] [HostType("ASP.NET")] [AspNetDevelopmentServerHost("E:\\Visual Studio 2005\\Test\\TestWebService", "/")] [UrlToTest("http://localhost:6036/")] public void HelloWorldTest() { TestService target = new TestService(); string actual; actual = target.HelloWorld(); Assert.Inconclusive(actual); }
按属性名来理解,HostType设定的是主机类型,AspNetDevelopmentServerHost指定的是项目的路径,而UrlToTest指定的是发送请求到WebService的Url,导致上述错误出现的问题也在此。因为HostType属性指定了主机的类型是ASP.NET,则UrlToTest属性必须可以被解析为ASP.NET页。在运行测试的时候,正是该页面向WebService发送请求。
在Visual Studio自动创建的代码中,UrlToTest的值通常是Web项目的Url,该Url默认是会指向项目中的Default.aspx页面,具体情况视ASP.NET服务器的配置而定。所以,如果你所建的项目中没有Default.aspx的话,直接运行测试的时候则会出现上述错误。所以我们必须把UrlToTest的值改成一个可被解析为ASP.NET的页。
以下属于猜测:如果HostType的值不指定为ASP.NET的话,UrlToTest也应该可以使非ASP.NET页。本人对HostType属性了解不多,这里只作简单说明,留待有兴趣的朋友自己验证。
相关文章推荐
- 关于Hibernate 在Junit测试中可以成功但是在Web下却无法运行的处理方法
- 【C#】对异步请求处理程序IHttpAsyncHandler的理解和分享一个易用性封装 【手记】走近科学之为什么明明实现了IEnumerable<T>的类型却不能调用LINQ扩展方法 【手记】手机网页弹出层后屏蔽底层的滑动响应 【手记】ASP.NET提示“未能创建类型”处理 【Web】一个非常简单的移动web消息框 【手记】解决EXCEL跑SQL遇“查询无法运行或数据库表无法打开...”
- HttpWebRequest请求超时异常的处理方法(重新发送请求到成功为止)
- 以下题目均在bookstore项目上完成(请先运行数据库文件): 1、编写单元测试用例,对用户注册功能的Action层进行测试。(注意:测试用例应考虑成功和失败的情况)
- 在请求完成后回调delegate的方法。然而回调时经常遇到这种情况:delegate已经被释放
- 关于运行web程序的几点错误处理方法
- web服务器和客户端完成并行处理请求三大方式
- Appium的一点一滴:Appium测试hybirdapp,在webView中处理方法
- 关于Office Web Apps服务是否正常运行的测试方法
- sqlserver 消息 682,: 内部错误。提供用于读取列值的缓冲区太小。请运行 DBCC CHECKDB 查看是否有损坏情况 的处理方法
- web的get请求中一个key有多个值的情况django是怎么处理的
- web的get请求中一个key有多个值的情况django是怎么处理的
- Linux中web服务运行情况的方法
- 使用webpack-dev-server处理跨域请求的方法
- 请求WebMethod,Ajax处理更加简练【注:此方法需要在.net 3.5版本以上】
- axios对请求各种异常情况处理的封装方法
- ASP.NET Core管道深度剖析(2):创建一个“迷你版”的管道来模拟真实管道请求处理流程
- java web 中request请求参数含有中文的处理方法
- lighttpd+web.py的一个简单测试结果:每秒可处理350个请求
- [备忘]IIS 7.5运行.aspx出现“由于 Web 服务器上的“ISAPI 和 CGI 限制”列表设置,无法提供您请求的页面。”错误解决方法