2017-07-15 125 views
1

我試圖讓我的Web服務寫入我們的Intranet上的共享驅動器。我得到我的StreamWriterStreamWriter拋出IOException異常登錄失敗:未知的用戶名或密碼錯誤

string fullpath = path + "\\" + fileName; 
using (System.IO.StreamWriter file = new System.IO.StreamWriter(fullpath, append)) 
{   
    file.WriteLine(contents); 
    file.Close(); 
} 

而且我看到異常IOException異常,

IOException - Logon failure: unknown user name or bad password 

如果我理解正確,IIS Web服務器的用戶需要訪問寫入共享驅動器。我想知道是否有一種方法,我現在可以硬編碼憑據,寫入共享驅動器進行調試。我如何向StreamWriter提供證書,或者我應該使用另一種機制?

我看着模擬(using StreamWriter on server in C#),並希望儘可能使用它作爲最後的手段。

+0

是服務與文件試圖訪問它不具有文件級訪問的文件進行交互?例如如果您使用相同的用戶帳戶,您可以打開該文件嗎? –

+0

爲了澄清上述評論,用戶/服務帳戶將用於請求該文件,因此無論用戶IIS服務器運行應用程序池時都需要對該文件的權限。如果這是由Active Directory用戶和Windows權限管理的,那麼可能與系統管理員聊天並請求這些權限? –

+0

@Joe_DM是的,我想這將需要由sys管理。管理員。我只想在今晚進行研究,並想知道是否有其他方式提供證書。 –

回答

0

只要以編程方式寫入網絡驅動器,就可以使用用來啓動程序的用戶名和密碼。除非您使用的是域,否則會產生錯誤,因爲網絡驅動器無法識別您的用戶名和密碼。

所以要解決這個問題,你需要做的就是運行與不同用戶相同的代碼。這基本上是你想要避免的模仿,但是我找到了一個解釋這個的useful Stack Overflow Thread,並且鏈接到了你可以在代碼中使用的包裝類,以使事情變得更簡單。

像這樣簡單(從thread):

using (Impersonation.LogonUser(domain, username, password, logonType)) 
{ 
     // do whatever you want as this user. 
} 

這應該解決您的問題

相關問題