2011-12-21 42 views
0

我想自動從客戶端鏈接提示的exe文件的下載。我可以從http://go.microsoft.com/fwlink/?LinkID=149156http://www.microsoft.com/getsilverlight/handlers/getsilverlight.ashx獲得第一個重定向鏈接。請點擊並檢查它是如何工作的。 fwlink - > .ashx - > .exe ...我想直接鏈接到.exe。 但是,當通過代碼請求Web處理程序時,響應返回404,但如果嘗試使用瀏覽器,則實際下載。 任何人都可以建議如何自動化上述鏈接的下載表單嗎?我用來獲取鏈接重定向的代碼是這一個。在網絡瀏覽器中禁用保存/對話框並自動下載

public static string GetLink(string url) 
{ 
    HttpWebRequest httpWebRequest = WebRequest.Create(url) as HttpWebRequest; 
    httpWebRequest.Method = "HEAD"; 
    httpWebRequest.AllowAutoRedirect = false; 
    // httpWebRequest.ContentType = "application/octet-stream"; 
    //httpWebRequest.Headers.Add("content-disposition", "attachment; filename=Silverlight.exe"); 
    HttpWebResponse httpWebResponse = httpWebRequest.GetResponse() as HttpWebResponse; 
    if (httpWebResponse.StatusCode == HttpStatusCode.Redirect) 
    { 
     return httpWebResponse.GetResponseHeader("Location");    
    } 
    else 
    { 
     return null; 
    } 
} 
+1

@DavidStratton:他在客戶端上運行C#代碼(我假設);沒有安全問題。 – SLaks 2011-12-21 22:49:20

+0

嘗試添加Cookie,或者使用GET而不是HEAD。 – SLaks 2011-12-21 22:49:57

+0

謝謝SLaks.I嘗試GET。它沒有工作,但對於cookie ...我試圖將它添加到響應,如果這是你的意思? – Deku 2011-12-21 23:07:27

回答

2

剛剛測試過,它會下載文件。

WebClient client = new WebClient(); 

client.Headers.Add("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"); 

client.DownloadFile(url, "Filename.exe"); 

你只需要添加的用戶代理爲特定的Silverlight下載取決於什麼瀏覽器,您正在運行的,因此,如果它不能檢測到一個那麼它就會失敗。

將用戶代理更改爲將觸發所需的相應下載的內容。

+0

非常感謝!它像一個魅力一樣工作! – Deku 2011-12-22 19:44:30

相關問題