0

我有以下代码在我的 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 测试应用程序吗?

4

1 回答 1

2

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

创建 WP 测试项目:

  1. 创建 Windows Phone Silverlight 应用程序项目
  2. 添加对您的实际应用程序项目的引用
  3. 下载并参考Mango 的 SL 单元测试程序集
  4. 将以下代码添加到Loaded事件处理程序中的 MainPage:

_

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);

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

于 2012-04-30T00:46:17.607 回答