2012-09-12 47 views
-1

我有一個問題,我花了很多時間尋找解決方案,但我沒有很好的答案。問題是,我試圖使用「savefiledialog」,當我在我的電腦的本地主機中運行它時,它完美的工作,對話框出現沒有任何問題,我可以保存文件,因爲它假設工作...但是,當我發佈它在iis服務器,我嘗試使用它,它不會出現,我的意思是對話框的savefile不會出現,我把一個Try Catch,但它不會給我任何錯誤消息,我不知道問題在哪裏,我希望有人對發生的事情有一個藍色。在此先感謝,我的代碼是:visual .net savefiledialog對話框從不出現

保護小組的button1_Click(發送者爲對象,E作爲System.EventArgs)把手Button1.Click

Dim _newThread As New Threading.Thread(AddressOf Descarga) 
    _newThread.SetApartmentState(ApartmentState.STA) 
    _newThread.Start("C:\Compras\Prueba.txt") 

End Sub 

私人小組Descarga(BYVAL _ruta作爲對象)

Dim Dialog As New System.Windows.Forms.SaveFileDialog 

    Dialog.InitialDirectory = "C:\" 
    Dialog.Title = "Save text Files" 
    Dialog.CheckFileExists = True 
    Dialog.CheckPathExists = True 
    Dialog.DefaultExt = "txt" 
    Dialog.Filter = "Text files (*.txt)|*.txt|All files (*.*)|*.*" 
    Dialog.FilterIndex = 2 
    Dialog.RestoreDirectory = True 

    If Dialog.ShowDialog() = Windows.Forms.DialogResult.OK Then 
     FileCopy(_ruta, Dialog.FileName) 
    End If 

End Sub 
+0

問:如果你不產卵的對話線程會發生什麼?問:您是否通過調試器來查看您的線程是否已成功創建?如果它啓動? – paulsm4

+3

這是asp.net?你意識到這個對話框必須在**服務器上打開**對嗎? – asawyer

+0

嗨,謝謝你的回答,如果我不使用線程,它會向我發送此錯誤消息:在OLE之前,當前線程必須設置爲單線程單元(STA)模式...我確信線程是成功創建我做了一個測試,它沒有問題,問題是在這一行:Dialog.ShowDialog()在該行之前一切正常。 –

回答

0

您正在使用windows窗體SaveFileDialog。當您執行ShowDialog時,它將在服務器上打開它,而不是在客戶端瀏覽器中打開它。

您需要將文件發送給客戶端作爲響應。

編輯
像這樣的東西應該提示客戶端來保存文件:

Dim FileName As String = "Prueba.txt" 
Dim FilePath As String = "C:\Compras\" 
Dim response As System.Web.HttpResponse = System.Web.HttpContext.Current.Response 
response.ClearContent() 
response.Clear() 
response.ContentType = "text/plain" 
response.AddHeader("Content-Disposition", "attachment; filename=" + FileName + ";") 
response.TransmitFile(FilePath + FileName) 
response.Flush() 
response.End() 
+0

有辦法在客戶端瀏覽器中打開它?或者這是不可能的?感謝您的幫助Sani Huttunen和對不起我是一個初學者 –

+0

是的,但我需要窗口「另存爲」,如果我發送迴應,它會在瀏覽器中打開文件:( –

+0

所以我會試試看,謝謝Sani Huttunen –