WP7 App的HttpWebRequest抛出NullReferenceException

时间:2012-04-29 21:57:55

标签: unit-testing windows-phone-7 httpwebrequest nullreferenceexception

我有以下代码在我的WP7应用程序中创建HttpWebRequest。我试图从单元测试应用程序调用此代码,该应用程序类型为“Silverlight单元测试应用程序”,目标框架设置为Silverlight 5.我从Jeff Wilcox的博客中抓取了WP7.5 Mango Beta测试程序集:

public void SomeFunction()
{
    Uri uri = new Uri("http://www.google.com");
    HttpWebRequest request = HttpWebRequest.CreateHttp(uri);
    request.Method = "POST";
    ...
}

在上面的代码中,创建请求的行会抛出NullReferenceException。堆栈跟踪不提供任何有价值的东西。

这是因为我正在使用SL测试应用程序吗?

1 个答案:

答案 0 :(得分:2)

Windows Phone 7.5使用Silveright 4,而不是5,但它与桌面版本不兼容(必须从WP模拟器运行单元测试)。

创建WP测试项目:

  1. 创建Windows Phone Silverlight应用程序项目
  2. 添加对实际应用程序项目的引用
  3. 下载并参考SL Unit Testing assemblies for Mango
  4. 将以下代码添加到Loaded事件处理程序中的MainPage:
  5. _

    var testPage = UnitTestSystem.CreateTestPage() as IMobileTestPage; 
    BackKeyPress += (x, xe) => xe.Cancel = testPage.NavigateBack(); 
    (Application.Current.RootVisual as PhoneApplicationFrame).Content = testPage; 
    

    关于主题,可能能够通过重新注册正确的处理程序来解决问题:

    WebRequest.RegisterPrefix("http://", WebRequestCreator.ClientHttp);
    WebRequest.RegisterPrefix("https://", WebRequestCreator.ClientHttp);
    

    但是,我建议你重新开始。