独立存储例外:无法确定域的身份(Isolated Storage Exception: Unable

2019-08-19 07:26发布

我建立在SQL Server 2012 SP1 Reporting Services实例可导出34MB的文件添加到Excel 2007-2013 XLSX的OpenXML订阅呈现扩展。 订阅引发以下错误:

System.IO.IsolatedStorage.IsolatedStorageException:无法确定域的身份。

我核实,可以从报表管理器将报表导出到Excel的2007 - 2013年XLSX的OpenXML呈现扩展没有问题。 只有当通过订阅执行报告中出现此错误。 我研究这一点,并在网上找到了以下建议:

  1. 两个独立的微软连接错误报告764356和764556有没有上市的变通。

  2. 一项建议错开订阅,以便只有一个在同一时间运行。 这因为只有一个订阅以错误的时间运行没有帮助。

  3. 一项建议,使用Excel 2003中渲染方法和行打入分开的选项卡,以避免65536行限制。 我没有验证这工作,但这不是从企业利益相关者的角度来看,一个可以接受的解决方案。

  4. 注释指示使用Excel 2007 - 2013年呈现超过从存储器中被产生于使用独立存储在尺寸开关10 MB法的任何报告。 有没有解释为什么这是不好的,我认为这是做了一个很好的理由 - 也许是为了限制RAM消费。

  5. 有人建议提升权限在ASP.NET应用程序的独立存储文件夹的用户。 我找不到在独立存储文件夹的位置报告服务。

  6. 有人建议包裹ASP.NET对独立存储的代码与额外的代码,绕过这个问题。 我无法找到一个方法,因为这是微软的产品运到应用此解决方案,报表服务。

  7. 修改报表管理器和报表服务器的web.config文件中有人建议包括了maxRequestLength =“200000”中的httpRuntime节点。 这并没有改变结果。

  8. 有人建议增加明确RSReportServer.config内存设置。 这似乎并不像它会帮助,因为错误涉及到独立存储,但我尝试过了desparation的。 这并没有改变结果。

  9. 建议向DatabaseQueryTimeout值从120更改为更大的东西。 这并没有改变结果。

  10. 有人建议更改认购执行超时值。 这并没有改变结果。

以下是完整的错误日志条目的副本:

reportrendering!WindowsService_5!1628!04/03/2013-09:48:33:: e ERROR: Throwing Microsoft.ReportingServices.ReportProcessing.UnhandledReportRenderingException: , Microsoft.ReportingServices.ReportProcessing.UnhandledReportRenderingException: An error occurred during rendering of the report. ---> Microsoft.ReportingServices.OnDemandReportRendering.ReportRenderingException: An error occurred during rendering of the report. ---> System.IO.IsolatedStorage.IsolatedStorageException: Unable to determine the identity of domain.
   at System.IO.IsolatedStorage.IsolatedStorage._GetAccountingInfo(Evidence evidence, Type evidenceType, IsolatedStorageScope fAssmDomApp, Object& oNormalized)
   at System.IO.IsolatedStorage.IsolatedStorage.GetAccountingInfo(Evidence evidence, Type evidenceType, IsolatedStorageScope fAssmDomApp, String& typeName, String& instanceName)
   at System.IO.IsolatedStorage.IsolatedStorage._InitStore(IsolatedStorageScope scope, Evidence domainEv, Type domainEvidenceType, Evidence assemEv, Type assemblyEvidenceType, Evidence appEv, Type appEvidenceType)
   at System.IO.IsolatedStorage.IsolatedStorage.InitStore(IsolatedStorageScope scope, Type domainEvidenceType, Type assemblyEvidenceType)
   at System.IO.IsolatedStorage.IsolatedStorageFile.GetStore(IsolatedStorageScope scope, Type domainEvidenceType, Type assemblyEvidenceType)
   at MS.Internal.IO.Packaging.PackagingUtilities.ReliableIsolatedStorageFileFolder..ctor()
   at MS.Internal.IO.Packaging.PackagingUtilities.GetDefaultIsolatedStorageFile()
   at MS.Internal.IO.Packaging.PackagingUtilities.CreateUserScopedIsolatedStorageFileStreamWithRandomName(Int32 retryCount, String& fileName)
   at MS.Internal.IO.Packaging.SparseMemoryStream.EnsureIsolatedStoreStream()
   at MS.Internal.IO.Packaging.SparseMemoryStream.SwitchModeIfNecessary()
   at MS.Internal.IO.Zip.ZipIOFileItemStream.Write(Byte[] buffer, Int32 offset, Int32 count)
   at System.IO.Compression.DeflateStream.InternalWrite(Byte[] array, Int32 offset, Int32 count, Boolean isAsync)
   at System.IO.Compression.DeflateStream.Write(Byte[] array, Int32 offset, Int32 count)
   at MS.Internal.IO.Packaging.CompressStream.Write(Byte[] buffer, Int32 offset, Int32 count)
   at MS.Internal.IO.Zip.ProgressiveCrcCalculatingStream.Write(Byte[] buffer, Int32 offset, Int32 count)
   at MS.Internal.IO.Zip.ZipIOModeEnforcingStream.Write(Byte[] buffer, Int32 offset, Int32 count)
   at Microsoft.ReportingServices.Rendering.ExcelOpenXmlRenderer.XMLModel.XMLStreamsheetModel.WriteStreamToStream(Stream from, Stream to)
   at Microsoft.ReportingServices.Rendering.ExcelOpenXmlRenderer.XMLModel.XMLStreamsheetModel.Cleanup()
   at Microsoft.ReportingServices.Rendering.ExcelOpenXmlRenderer.OpenXmlGenerator.FinalizeWorksheet()
   at Microsoft.ReportingServices.Rendering.ExcelOpenXmlRenderer.OpenXmlGenerator.NextWorksheet()
   at Microsoft.ReportingServices.Rendering.ExcelRenderer.ExcelRenderer.Render(Report report, NameValueCollection reportServerParameters, NameValueCollection deviceInfo, NameValueCollection 

Answer 1:

你可以在这里找到一个解决方案: http://rekiwi.blogspot.com/2008/12/unable-to-determine-identity-of-domain.html

在COM组件,创建具有相应的证据一个新的AppDomain,并在执行代码。

下面是固定的问题对我来说是代码示例:

AppDomainSetup setup = new AppDomainSetup();
setup.ApplicationBase = AppDomain.CurrentDomain.BaseDirectory.ToString();

//Then we need our evidence
System.Security.Policy.Evidence evidence = new System.Security.Policy.Evidence();
evidence.AddHost(new System.Security.Policy.Zone(System.Security.SecurityZone.MyComputer));

//Now we can fire up an AppDomain running with that evidence.
AppDomain domain = AppDomain.CreateDomain("YourDll.YourClass", evidence, setup);

YourDll.YourClass yourclass = (YourDll.YourClass)domain.CreateInstanceAndUnwrap(typeof(YourDll.YourClass).Assembly.FullName, typeof(YourDll.YourClass).FullName);

yourclass.CallYourMethod();

要马歇尔跨应用程序域的任何类型都标记为[Serializable接口()],并且必须从MarshalByRefObject继承而来。 例如:

namespace YourDll
{
[Serializable()]
public class YourClass: MarshalByRefObject
{
...


文章来源: Isolated Storage Exception: Unable to determine the identity of domain