2010-01-19 63 views
0

我想知道我是否正確編碼。要手動將文件上傳到我的工作區服務器,我必須使用登錄ID和密碼。有了下面的代碼,我是否應該包含我的loginID和密碼?WebClient將文件上傳到網絡

public void SaveLogsToWeb(string logFileName) 
    { 
     WebClient webClient = new WebClient(); 
     string webAddress = null; 
     try 
     { 
      webAddress = @"http://myCompany/ShareDoc/"; 

      webClient.Credentials = CredentialCache.DefaultCredentials; 

      WebRequest serverRequest = WebRequest.Create(webAddress); 
      WebResponse serverResponse; 
      serverResponse = serverRequest.GetResponse(); 
      serverResponse.Close(); 

      webClient.UploadFile(webAddress + logFileName, "PUT", logFileName); 
      webClient.Dispose(); 
      webClient = null; 
     } 
     catch (Exception error) 
     { 
      MessageBox.Show(error.Message); 
     } 
    } 

當我運行它,異常拋出 「(401)未經授權」

感謝。

+1

這是一個web應用程序或一個控制檯應用程序? – sestocker 2010-01-19 03:59:32

+0

這是一個Windows窗體應用程序。 – Bopha 2010-01-19 18:29:41

回答

1

您不應該在代碼文件中包含用戶/密碼信息。這是拋出一個401的原因是因爲互聯網用戶和它運行的應用程序池沒有寫入您要寫入目錄的寫入權限。

右鍵單擊該目錄並添加/ ASPNET和/ Network Service作爲具有寫入權限的用戶。這應該可以解決問題。確保你隔離目錄。

這裏的好就可以了MSDN文章:http://support.microsoft.com/kb/815153

+0

感謝您的信息。當我回家時我會閱讀。再次感謝。 – Bopha 2010-01-19 03:53:31

+0

按照提供的鏈接,它只提到了ASPNET,但我使用C#將文件上傳到網絡。這是我沒有得到的部分。在它與上面的代碼一起工作之前,但是當我再次執行相同的程序時,它會抱怨未經授權的程序。 – Bopha 2010-01-19 17:37:17

+0

是的,上面的代碼片段有效,但許可不是基於上面的代碼。它位於IIS /文件系統級別。 401始終是Web服務器無權執行本地文件系統上的操作的時候。通常它會涉及缺少「讀取」訪問權限,但在這種情況下,您正在嘗試進行實際寫入,以便服務器上的Web進程需要新的寫入權限。 – 2010-01-19 17:42:53

0

很晚了,也許,但是,你可以添加這兩條線webClient.Upload..之前得到它固定:

webClient.Headers["Accept"] = "/"; 
webClient.Headers.Add(HttpRequestHeader.UserAgent, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)");