2016-09-17 2 views
0

Я пытаюсь создать новый файл jpeg из задачи async. Релевент фрагмент кода показан нижеSystem.UnauthorizedAccessException при создании файла из задачи Async

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); 
} 

Это бросает System.UnauthorizedAccessException выше в FileStream. Тот же самый фрагмент файла Filestream для одного и того же пути работает на консольном приложении C#, в том смысле, что файл test.jpg создается. Любые предложения по поводу того, чего я здесь не вижу.

+0

Проверьте и проверьте, существует ли на диске ваш файл «test.jpg». – Niklas

+0

'await Task.Run (() => ReceiveFile (args));' –

+0

Пробовал это тоже, то же самое исключение вызывается –

ответ

0

Скорее всего вы пытаетесь создать файл под другим пользователем. Посмотрите, что у вас есть в Thread.CurrentPrincipal в обоих сценариях, прежде чем вы сделаете new FileStream.

Поскольку у вас нет точного кода и настройки среды в вопросе, я не могу предложить точное решение, но могу дать направление для поиска. Если у вас есть другой пользователь, просто убедитесь, что он имеет доступ к определенному каталогу, в котором вы нуждаетесь.

+0

Я вошел в свой ноутбук с Windows 10, используя мою учетную запись gmail, у которой есть привилегии администратора. Не должно быть хорошо? –

+0

Также относительно Thread.CurrentPrincipal, я смотрю это в своем отладчике. Не могли бы вы рассказать мне, в какой структуре int int hat мне нужно искать? –

+0

Вы можете посмотреть 'System.Security.Principal.WindowsIdentity.GetCurrent()', чтобы узнать, с каким пользователем Windows вы работаете. –

Смежные вопросы