首页 > 开发 > .Net > 正文

“Web请求在未运行测试的情况下成功完成。”的解决方法

2023-04-27 19:28:48
字体:
来源:转载
供稿:网友

不论是在Web项目中添加Web服务还是直接新建一个Web服务项目,在为WebMethod创建单元测试,运行测试的时候有可能抛出这样的错误信息:

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属性了解不多,这里只作简单说明,留待有兴趣的朋友自己验证。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表