0

我有一個使用Visual Studio 2008創建的項目,其目標是使用HttpListenerRequest類的.NET 3.5。作爲統計信息收集機制的一部分,類的所有屬性都寫入文件。自從將項目轉換爲VS2010後,HttpListenerRequest屬性不再可用

我最近試圖將項目從VS2008解決方案轉換爲VS2010解決方案,並且在轉換過程中根本沒有錯誤,但只要我嘗試構建項目,編譯器聲稱它找不到「HttpListenerRequest .ServiceName「和」HttpListenerRequest.TransportContext「。

在這兩個項目上,目標框架都是.NET Framework 3.5,我比較了被引用的DLL版本號,看起來一切都一樣。

我決定檢查兩個版本的Visual Studio中的HttpListenerRequest類的元數據,以發現儘管2010沒有像預期的那樣引用ServiceName和TransportContext,但VS2008顯示了兩個屬性,但都沒有摘要描述。

然後我在VS2010中創建了一個針對.NET 4的項目,它允許我引用上述兩個屬性。

我確實需要繼續以.NET 3.5爲目標,無論如何,我可以在不更改代碼的情況下使其工作,以排除如此多的功能嗎?

編輯:按照要求,這是代碼:

void Log(System.Net.HttpListenerContext context) 
{ 
    string line = 
      DateTime.Now.ToString() + "|" + 
      context.Request.HttpMethod + "|" + 
      context.Request.RawUrl + "|" + 
      context.Request.Url.ToString() + "|" + 
      context.Request.RemoteEndPoint.ToString() + "|" + 
      (context.Request.UrlReferrer == null ? "None" : context.Request.UrlReferrer.ToString()) + "|" + 
      (context.Request.ServiceName == null ? "None" : context.Request.ServiceName) + "|" + // Error Here on ServiceName 
      context.Request.UserHostName + "|" + 
      context.Request.UserAgent + "|" + 
      context.Request.TransportContext.ToString() + "|" + // Error here on TransportContext 
      context.Request.ProtocolVersion + "|" + 
      context.Request.ContentLength64.ToString(); 

    WriteToFile(line); 
} 
+1

對我來說工作得很好(在VS2010,.Net 3.5中創建了新項目)。你能顯示導致錯誤的代碼嗎? – jeroenh

+0

你走了,我把它放在你身上。 – Tony

+0

我編輯了你的標題。請參閱:「[應該在其標題中包含」標籤「](http://meta.stackexchange.com/questions/19190/)」,其中的共識是「不,他們不應該」。 –

回答

0

所以我想通了:

的Visual Studio的兩個版本僅與System.dll中下面的版本信息提供了我: v2.0.50727

但是進入windows目錄並檢查文件後,存在版本差異。 不包括屬性的版本是版本v2.0.50727.3053,而版本v2.0.50727.3634包括它們。

我認爲問題在於我安裝Windows後禁用了Windows更新。