2012-08-14 110 views
3

我是新來看待.net的整個Web端,我遇到了一個小問題。HttpWebRequest不發送UserAgent

我試圖做的HttpWebRequest如下:

String uri = "https://skyid.sky.com/signup/"; 
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri); 
request.UserAgent = "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)"; 
request.Method = "GET"; 
request.GetResponse(); 

凡URI是指向HTTPS站點。但是,一旦我在Fiddler中查看它,它已經刪除了我的UserAgent,並且只顯示了Host和Connection:Keep-Alive。

CONNECT skyid.sky.com:443 HTTP/1.1 
Host: skyid.sky.com 
Connection: Keep-Alive 

這是正常使用HTTPS或者我只是失去了一些東西?也許我甚至錯過了Fiddler的一些東西,它並沒有向我展示這些。

任何幫助將不勝感激,謝謝大家!

+1

如果我運行這個(與'當然uri'的值),我看到的用戶代理中與HTTP和HTTPS提琴手。你大概已經在這裏爲你的例子剪掉了一些東西,因爲發佈空的內容並不常見。您可以在設置該標題後刪除標題集合中重寫的內容嗎? – 2012-08-14 16:11:39

+0

@JonHanna,對不起,我實際上正在做一個GET,我已經在上面的代碼中改變了它,並添加了更多的細節。所以我猜測它的Fiddler,如果你能看到UserAgent。 – Richard 2012-08-14 16:26:43

+0

您正在通過HTTPS(443)進行連接,因此您在此處看到的只是CONNECT HTTP動詞(用於啓動HTTPS連接)。請求的實際GET將在發送到服務器時進行加密。爲了在Fiddler中看到它,有一個高級選項可以幫助您解密加密的連接以查看實際的請求。 – 2012-08-14 16:46:13

回答

7

我不認爲你正在看正確的提琴手線。你顯示的是一個CONNECT動詞,而不是GET。應使用request.UserAgent屬性正確設置UserAgent。調試請求另一種方法是configure network tracing在我個人比較喜歡提琴手您的應用程序級別:

<configuration> 
    <system.diagnostics> 
     <sources> 
      <source name="System.Net" tracemode="protocolonly" maxdatasize="1024"> 
       <listeners> 
        <add name="System.Net"/> 
       </listeners> 
      </source> 
     </sources> 
     <switches> 
      <add name="System.Net" value="Verbose"/> 
     </switches> 
     <sharedListeners> 
      <add 
       name="System.Net" 
       type="System.Diagnostics.TextWriterTraceListener" 
       initializeData="network.log" 
      /> 
     </sharedListeners> 
     <trace autoflush="true"/> 
    </system.diagnostics> 
</configuration> 
+0

它對Web服務ASMX有效嗎?我使用客戶端(代理WebService ASMX引用,而不是WCF服務參考)來調用ASMX服務。 – Kiquenet 2017-11-01 11:46:09

相關問題