ClosedXML SecurityException: запрошенный доступ к реестру запрещен

Я использую ClosedXML для экспорта файла Excel и не могу экспортировать файл Excel. Каждый раз, когда я нажимаю кнопку для экспорта файла Excel (XLSX), я получаю сообщение об ошибке. Смотри ниже...

    using (XLWorkbook wb = new XLWorkbook())
    {
        wb.Worksheets.Add(dsInput);
        Response.Clear();
        Response.Buffer = true;
        Response.Charset = "";
        Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
        Response.AddHeader("content-disposition", "attachment;filename=" + sFileName + ".xlsx");
        using (MemoryStream MyMemoryStream = new MemoryStream())
        {

            wb.SaveAs(MyMemoryStream, false);

            MyMemoryStream.WriteTo(Response.OutputStream);
            Response.Flush();
            Response.End();
        }
    }

Я получаю эту ошибку: SecurityException: запрошенный доступ к реестру не разрешен.

Exception thrown: 'System.TypeInitializationException' in WindowsBase.dll
System.TypeInitializationException: The type initializer for 
'MS.Utility.EventTrace' threw an exception. ---> 
System.Security.SecurityException: Requested registry access is not allowed.
at System.ThrowHelper.ThrowSecurityException(ExceptionResource resource)
at Microsoft.Win32.RegistryKey.OpenSubKey(String name, Boolean writable)
at Microsoft.Win32.RegistryKey.OpenSubKey(String name)
at Microsoft.Win32.Registry.GetValue(String keyName, String valueName, 
Object defaultValue)
at MS.Utility.EventTrace.IsClassicETWRegistryEnabled()
at MS.Utility.EventTrace..cctor()
--- End of inner exception stack trace ---
at MS.Utility.EventTrace.EasyTraceEvent(Keyword keywords, Event eventID)
at System.IO.Packaging.Package.Open(Stream stream, FileMode packageMode, 
FileAccess packageAccess, Boolean streaming)
at DocumentFormat.OpenXml.Packaging.OpenXmlPackage.CreateCore(Stream stream)
at DocumentFormat.OpenXml.Packaging.SpreadsheetDocument.Create(Stream 
stream, SpreadsheetDocumentType type, Boolean autoSave)
at DocumentFormat.OpenXml.Packaging.SpreadsheetDocument.Create(Stream 
stream, SpreadsheetDocumentType type)
at ClosedXML.Excel.XLWorkbook.CreatePackage(Stream stream, Boolean 
newStream, SpreadsheetDocumentType spreadsheetDocumentType, Boolean 
validate) in C:\Git\ClosedXML\ClosedXML\Excel\XLWorkbook_Save.cs:line 111
at ClosedXML.Excel.XLWorkbook.SaveAs(Stream stream, Boolean validate) in 
C:\Git\ClosedXML\ClosedXML\Excel\XLWorkbook.cs:line 547
at ExcelHelper.ToExcel(DataSet dsInput, String sFileName, HttpResponse 
Response) in c:\inetpub\wwwroot\Felbro_B\App_Code\ExcelHelper.cs:line 139

person Arraylist    schedule 19.04.2017    source источник


Ответы (2)


Я решил проблему, удалив идентификатор impersonate="true" из файла Web.Config.

person Arraylist    schedule 19.04.2017
comment
Вы также можете принять свой собственный ответ, чтобы другие могли видеть, что проблема решена. - person Andrii Litvinov; 19.04.2017
comment
Возможно, прокомментируйте, что проблема не была связана с ClosedXML. - person Francois Botha; 19.04.2017
comment
Что делать, если ваше приложение нуждается в олицетворении? Есть ли исправление или обходной путь? - person jktravis; 09.05.2018

Для будущих людей, столкнувшихся с этим: я просмотрел исходную ссылку .NET, и ключ реестра, к которому ему нужен доступ, — HKEY_CURRENT_USER\Software\Microsoft\Avalon.Graphics. Предоставление «Всем» доступа для чтения к этому конкретному ключу не имеет никаких последствий для безопасности, о которых я могу думать, и решает проблему.

person user3093028    schedule 08.04.2020
comment
Это было полезно, но сначала нам нужно было перезагрузить машину. Возможно, в Windows или IIS есть какой-то странный кеш для таких вещей. - person RobSiklos; 05.05.2020