2016-09-17 64 views
0

我想從異步任務中創建一個新的jpeg文件。的培訓相關的代碼段如下所示從異步任務創建文件時System.UnauthorizedAccessException

private async void OnSocketConnectionReceived(StreamSocketListener sender, StreamSocketListenerConnectionReceivedEventArgs args) 
{ 
    await ReceiveFile(args); 
} 

private async Task ReceiveFile(StreamSocketListenerConnectionReceivedEventArgs args) 
{ 
    string pathString = @"C:\Users\sarav\test.jpg"; 
    FileStream writeStream = new FileStream(pathString, FileMode.CreateNew, FileAccess.Write, FileShare.None, bufferSize: 4096, useAsync: true); 
} 

它將引發上面的FileStream的System.UnauthorizedAccessException的。相同路徑的相同Filestream片段正在基於控制檯的C#應用​​程序上工作,從文件test.jpg開始創建。任何建議作爲我在這裏失蹤。

+0

檢查並確認您的文件「test.jpg」是否已存在於磁盤上。 – Niklas

+0

'等待Task.Run(()=> ReceiveFile(參數));' –

+0

想這也是,同樣的異常被拋出 –

回答

0

很有可能您嘗試在不同的用戶下創建文件。在執行new FileStream之前,請在兩種情況下查看Thread.CurrentPrincipal中的內容。

因爲你沒有在這個問題的確切的代碼和環境設置,我不能提出確切的解決方案,但可以給一個方向鑽進去。如果你有一個不同的用戶,只要確保它有權訪問你需要的特定目錄。

+0

我登錄到我的Windows 10筆記本電腦使用我的Gmail帳戶,它具有管理員權限。不應該罰款? –

+0

另外關於Thread.CurrentPrincipal,我在我的調試器中看着這個。你能告訴我哪個字段需要查找嗎? –

+0

您可以查看'System.Security.Principal.WindowsIdentity.GetCurrent()'來查看您正在運行的Windows用戶。 –