0

我有以下代碼在我的WP7應用程序中創建一個HttpWebRequest。我試圖從目標框架設置爲Silverlight 5的「Silverlight單元測試應用程序」類型的單元測試應用程序調用此代碼。我從Jeff Wilcox的博客中獲取WP7.5芒果Beta測試程序集:WP7應用程序的HttpWebRequest拋出NullReferenceException

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

在上面的代碼中,創建請求的行會拋出一個NullReferenceException。堆棧跟蹤不提供任何有價值的東西。

這是因爲我在使用SL測試應用程序嗎?

回答

2

Windows Phone 7.5使用Silverlight 4而不是5,但它與桌面版本不兼容(單元測試必須從WP模擬器運行)。

要創建一個WP測試項目:

  1. 創建一個Windows Phone的Silverlight應用程序項目
  2. 引用添加到您的實際應用項目
  3. 下載和引用SL Unit Testing assemblies for Mango
  4. 添加以下代碼到MainPage中的Loaded事件處理程序:

_

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

不過,我建議你剛剛重新開始。

+0

是的,我最終找到另一篇博客文章,要求我設置它。如果有人在新項目窗口中將該代碼引導到項目選項中,那將會很好。 :) – sohum

相關問題