您的位置:首页 > 其它

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

2010-08-05 15:37 615 查看
  不论是在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属性了解不多,这里只作简单说明,留待有兴趣的朋友自己验证。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐