繁体   English   中英

ClosedXML 读取 excel 文件错误:“MS.Utility.EventTrace”的类型初始化程序引发异常。 (C#)

[英]ClosedXML Read excel file Error: The type initializer for 'MS.Utility.EventTrace' threw an exception. (C#)

我正在使用 closedXML 在 asp.net 应用程序中开发 Excel 上传功能。 该功能在我使用本地 IIS 时工作正常,而在我使用 Visual Studio 2013 时出现异常。这不允许我在代码中进行进一步调试。

例外:

Message: The type initializer for 'MS.Utility.EventTrace' threw an exception.
Stack Trace: 
   at MS.Utility.EventTrace.EasyTraceEvent(Keyword keywords, Event eventID)
   at System.IO.Packaging.Package.Open(String path, FileMode packageMode, FileAccess packageAccess, FileShare packageShare, Boolean streaming)
   at System.IO.Packaging.Package.Open(String path, FileMode packageMode, FileAccess packageAccess, FileShare packageShare)
   at DocumentFormat.OpenXml.Packaging.OpenXmlPackage.OpenCore(String path, Boolean readWriteMode)
   at DocumentFormat.OpenXml.Packaging.SpreadsheetDocument.Open(String path, Boolean isEditable, OpenSettings openSettings)
   at DocumentFormat.OpenXml.Packaging.SpreadsheetDocument.Open(String path, Boolean isEditable)
   at ClosedXML.Excel.XLWorkbook.LoadSheets(String fileName)
   at ClosedXML.Excel.XLWorkbook.Load(String file)
   at ClosedXML.Excel.XLWorkbook..ctor(String file, XLEventTracking eventTracking)
   at ClosedXML.Excel.XLWorkbook..ctor(String file)
   at OnlinePolicyUpload.ReadExcel(String filePath) in d:\Application\XYZ\OnlineUpload.aspx.cs:line 413

内部异常:

Message: Requested registry access is not allowed.
Stack Trace:    
   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()

我的代码段:

private DataTable ReadExcel(string filePath)
    {
        try
        {
            DataTable dt = new DataTable();
            IXLWorkbook workBook = new XLWorkbook(filePath);
            IXLWorksheet workSheet = workBook.Worksheet(1);
            bool firstRow = true;
            foreach (IXLRow row in workSheet.Rows())
            {
                if (firstRow)
                {
                    foreach (IXLCell cell in row.Cells())
                    {
                        dt.Columns.Add(cell.Value.ToString());
                    }
                    firstRow = false;
                }
                else
                {
                    dt.Rows.Add();
                    int i = 0;
                    foreach (IXLCell cell in row.Cells())
                    {
                        dt.Rows[dt.Rows.Count - 1][i] = cell.Value.ToString();
                        i++;
                    }
                }
            }
            return dt;
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }

IXLWorkbook workBook = new XLWorkbook(filePath);行抛出异常

文件路径对所有人 IIS_IUSRS具有完全访问权限。 将此更改为false将影响我的应用程序登录失败。 <identity impersonate="true" userName="username" password="pass" />

尝试将权限更改为对注册表HKEY_CURRENT_USER\Software\Microsoft\Avalon.Graphics具有完全访问权限的每个人。 没运气。

请帮我解决一下这个。

这是 2008 年开发的一个非常古老的应用程序。通过正确更新CrystalDecisions.Web.dll解决了这个问题

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM