OpenXml和无法创build互斥

我试图通过openXml库创buildExcel文档,但是当我想从大量的数据创buildExcel,服务器鞋我无法创build互斥体。 (从HRESULTexception:0x80131464)错误,堆栈跟踪是:

[IsolatedStorageException: Unable to create mutex. (Exception from HRESULT: 0x80131464)] System.IO.IsolatedStorage.IsolatedStorageFile.Open(String infoFile, String syncName) +0 System.IO.IsolatedStorage.IsolatedStorageFile.Lock(Boolean& locked) +370 System.IO.IsolatedStorage.IsolatedStorageFileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, IsolatedStorageFile isf) +468 System.IO.IsolatedStorage.IsolatedStorageFileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, IsolatedStorageFile isf) +35 MS.Internal.IO.Packaging.SafeIsolatedStorageFileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, ReliableIsolatedStorageFileFolder folder) +102 MS.Internal.IO.Packaging.PackagingUtilities.CreateUserScopedIsolatedStorageFileStreamWithRandomName(Int32 retryCount, String& fileName) +276 MS.Internal.IO.Packaging.SparseMemoryStream.EnsureIsolatedStoreStream() +31 MS.Internal.IO.Packaging.SparseMemoryStream.SwitchModeIfNecessary() +400 MS.Internal.IO.Packaging.CompressEmulationStream.Write(Byte[] buffer, Int32 offset, Int32 count) +76 MS.Internal.IO.Packaging.CompressStream.Write(Byte[] buffer, Int32 offset, Int32 count) +431 MS.Internal.IO.Zip.ProgressiveCrcCalculatingStream.Write(Byte[] buffer, Int32 offset, Int32 count) +177 MS.Internal.IO.Zip.ZipIOModeEnforcingStream.Write(Byte[] buffer, Int32 offset, Int32 count) +130 System.Xml.XmlUtf8RawTextWriter.FlushBuffer() +7519035 System.Xml.XmlUtf8RawTextWriter.RawText(Char* pSrcBegin, Char* pSrcEnd) +232 System.Xml.XmlUtf8RawTextWriter.WriteStartElement(String prefix, String localName, String ns) +192 System.Xml.XmlWellFormedWriter.WriteStartElement(String prefix, String localName, String ns) +7517920 DocumentFormat.OpenXml.OpenXmlElement.WriteTo(XmlWriter xmlWriter) +283 DocumentFormat.OpenXml.OpenXmlCompositeElement.WriteContentTo(XmlWriter w) +114 DocumentFormat.OpenXml.OpenXmlElement.WriteTo(XmlWriter xmlWriter) +316 DocumentFormat.OpenXml.OpenXmlCompositeElement.WriteContentTo(XmlWriter w) +114 DocumentFormat.OpenXml.OpenXmlPartRootElement.WriteTo(XmlWriter xmlWriter) +404 DocumentFormat.OpenXml.OpenXmlPartRootElement.SaveToPart(OpenXmlPart openXmlPart) +217 DocumentFormat.OpenXml.Packaging.OpenXmlPackage.SavePartContents() +203 DocumentFormat.OpenXml.Packaging.OpenXmlPackage.Dispose(Boolean disposing) +32 DocumentFormat.OpenXml.Packaging.OpenXmlPackage.Dispose() +24 Yara.Evento.Utility.Office.Excel.Write.Do(List`1 objects, String sheetName, HeaderList headerNames) +2371 Yara.Evento.Management.Web.Controllers.TicketController.List(String button, Nullable`1 page, String startDate, String endDate, String ownerMail, String eventName, String mobile, String eMail, String ticketCode, Int32 sort, Boolean desc, Int32 eventId, Int32 status, Int32 variantId) +13628 lambda_method(Closure , ControllerBase , Object[] ) +864 System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters) +264 System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters) +39 System.Web.Mvc.<>c__DisplayClass15.<InvokeActionMethodWithFilters>b__12() +124 System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func`1 continuation) +726390 System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodWithFilters(ControllerContext controllerContext, IList`1 filters, ActionDescriptor actionDescriptor, IDictionary`2 parameters) +309 System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName) +726324 System.Web.Mvc.Controller.ExecuteCore() +159 System.Web.Mvc.ControllerBase.Execute(RequestContext requestContext) +334 System.Web.Mvc.<>c__DisplayClassb.<BeginProcessRequest>b__5() +62 System.Web.Mvc.Async.<>c__DisplayClass1.<MakeVoidDelegate>b__0() +15 System.Web.Mvc.<>c__DisplayClasse.<EndProcessRequest>b__d() +52 System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +606 System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +288 

似乎将ApplicationPool的Identity更改为LocalSystem并不总是对Windows Server 2009 R2的帮助。 奇怪的是,自从我阅读了这个主题并解决了我的基于OpenXML的大型报告问题后,它工作了大约半年,但几天前它刚刚停止工作。

因此,经过一天的研究,我发现另外在ApplicationPool的高级设置中,Load User Profile 设置True (默认值为False)并且没有问题。

我在IIS中将应用程序池标识更改为具有完全控制权限的更高级别帐户。

IIS>应用程序池>高级设置>身份(处理模式)>select访问权限较高的帐户

我同意@Behrooz,将ApplicationPool的身份更改为本地系统 ,它将工作。

当我的电脑的本地主机上运行项目时,我没有这个问题,但是当我将它部署到服务器时,

看这个截图:

在这里输入图像说明