Isolationstorage exception - unable to determine identity of domain - SSIS Script task - Openxml to create Excel files
I'm having an SSIS script task that creates an Excel file using openxml. I recieve the following exception while my pacakge is running.
Error: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> 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.GetCurrentStore()
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.Packaging.SparseMemoryStream.Write(Byte[] buffer, Int32 offset, Int32 count)
at MS.Internal.IO.Packaging.CompressEmulationStream.Write(Byte[] buffer, 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 System.Xml.XmlUtf8RawTextWriter.FlushBuffer()
at System.Xml.XmlUtf8RawTextWriter.WriteAttributeTextBlock(Char* pSrc, Char* pSrcEnd)
at System.Xml.XmlUtf8RawTextWriter.WriteString(String text)
at System.Xml.XmlWellFormedWriter.WriteString(String text)
at DocumentFormat.OpenXml.OpenXmlElement.WriteAttributesTo(XmlWriter xmlWriter)
at DocumentFormat.OpenXml.OpenXmlElement.WriteTo(XmlWriter xmlWriter)
at DocumentFormat.OpenXml.OpenXmlCompositeElement.WriteContentTo(XmlWriter w)
at DocumentFormat.OpenXml.OpenXmlElement.WriteTo(XmlWriter xmlWriter)
at DocumentFormat.OpenXml.OpenXmlCompositeElement.WriteContentTo(XmlWriter w)
at DocumentFormat.OpenXml.OpenXmlElement.WriteTo(XmlWriter xmlWriter)
at DocumentFormat.OpenXml.OpenXmlCompositeElement.WriteContentTo(XmlWriter w)
at DocumentFormat.OpenXml.OpenXmlPartRootElement.WriteTo(XmlWriter xmlWriter)
at DocumentFormat.OpenXml.OpenXmlPartRootElement.SaveToPart(OpenXmlPart openXmlPart)
at DocumentFormat.OpenXml.OpenXmlPartRootElement.Save()
at DocumentFormat.OpenXml.Packaging.OpenXmlPackage.SavePartContents()
at DocumentFormat.OpenXml.Packaging.OpenXmlPackage.Dispose(Boolean disposing)
at DocumentFormat.OpenXml.Packaging.OpenXmlPackage.Dispose()
at ST_b7ca688d916f485d9175583064912d2f.csproj.ScriptMain.BuildExel(String fileName)
at ST_b7ca688d916f485d9175583064912d2f.csproj.ScriptMain.Main()
--- End of inner exception stack trace ---
at System.RuntimeMethodHandle._InvokeMethodFast(Object target, Object[] arguments, SignatureStruct& sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner)
at System.RuntimeMethodHandle.InvokeMethodFast(Object target, Object[] arguments, Signature sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at System.RuntimeType.InvokeMember(String name, BindingFlags bindingFlags, Binder binder, Object target, Object[] providedArgs, ParameterModifier[] modifiers, CultureInfo culture, String[]
namedParams)
at System.Type.InvokeMember(String name, BindingFlags invokeAttr, Binder binder, Object target, Object[] args, CultureInfo culture)
at Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTATaskScriptingEngine.ExecuteScript()
And i believe i receieve the exception while trying to save the excel -
myWorkbook.WorkbookPart.Workbook.Save();
Can anyone suggest a solution for this.?
Please find below the BuildExcel method inside the script task. This is the only method i'm invoking in Main()
public
void BuildExel(string
fileName)
{
using (SpreadsheetDocument
myWorkbook = SpreadsheetDocument.Create(fileName,
SpreadsheetDocumentType.Workbook))
{
// Workbook Part
WorkbookPart workbookPart = myWorkbook.AddWorkbookPart();
var worksheetPart = workbookPart.AddNewPart<WorksheetPart>();
string relId = workbookPart.GetIdOfPart(worksheetPart);
// File Version
var fileVersion =
new
FileVersion { ApplicationName =
"Microsoft Office Excel" };
// Style Part
WorkbookStylesPart wbsp = workbookPart.AddNewPart<WorkbookStylesPart>();
wbsp.Stylesheet = CreateStylesheet();
wbsp.Stylesheet.Save();
// Sheets
var sheets =
new
Sheets();
var sheet =
new
Sheet { Name =
"Payment_Info", SheetId = 1, Id = relId };
sheets.Append(sheet);
DataTable dt =
new
DataTable();
dt = FillData_PaymentInfo();
SheetData sheetData1 =
new
SheetData(CreateSheetData_PaymentInfo(dt));
if (Dts.Variables["O_I_LS_IND"].Value.Equals("Y"))
{
DataTable dt2 =
new
DataTable();
dt2 = FillData_Loss();
if (dt2.Rows.Count >= 2)
{
SheetData sheetData2 =
new
SheetData(CreateSheetData_Loss(dt2));
var worksheetPart2 = workbookPart.AddNewPart<WorksheetPart>();
string relId2 = workbookPart.GetIdOfPart(worksheetPart2);
var sheet2 =
new
Sheet { Name =
"Loss_Related", SheetId = 2, Id = relId2 };
sheets.Append(sheet2);
var worksheet2 =
new
Worksheet();
worksheet2.Append(sheetData2);
worksheetPart2.Worksheet = worksheet2;
worksheetPart2.Worksheet.Save();
}
}
if (Dts.Variables["O_I_CS_IND"].Value.Equals("Y"))
{
DataTable dt3 =
new
DataTable();
dt3 = FillData_Claim();
if (dt3.Rows.Count >= 2)
{
try{
SheetData sheetData3 =
new
SheetData(CreateSheetData_Claim(dt3));
var worksheetPart3 = workbookPart.AddNewPart<WorksheetPart>();
string relId3 = workbookPart.GetIdOfPart(worksheetPart3);
var sheet3 =
new
Sheet { Name =
"Claim_Service", SheetId = 3, Id = relId3 };
sheets.Append(sheet3);
var worksheet3 =
new
Worksheet();
worksheet3.Append(sheetData3);
worksheetPart3.Worksheet = worksheet3;
worksheetPart3.Worksheet.Save();
}
catch
{
MessageBox.Show("claim");
}
}
}
if (Dts.Variables["O_I_LC_IND"].Value.Equals("Y"))
{
DataTable dt4 =
new
DataTable();
try
{
dt4 = FillData_CustomLoss();
}
catch
{
MessageBox.Show("cl");
}
if (dt4.Rows.Count >= 2)
{
try
{
SheetData sheetData4 =
new
SheetData(CreateSheetData_CustomLoss(dt4));
var worksheetPart4 = workbookPart.AddNewPart<WorksheetPart>();
string relId4 = workbookPart.GetIdOfPart(worksheetPart4);
var sheet4 =
new
Sheet { Name = Dts.Variables["O_I_Div_nm"].Value.ToString()
+ "(Loss)", SheetId = 4, Id = relId4 };
sheets.Append(sheet4);
var worksheet4 =
new
Worksheet();
worksheet4.Append(sheetData4);
worksheetPart4.Worksheet = worksheet4;
worksheetPart4.Worksheet.Save();
}
catch (Exception
ex)
{
MessageBox.Show(ex.Message);
}
}
}
if (Dts.Variables["O_I_CC_IND"].Value.Equals("Y"))
{
DataTable dt5 =
new
DataTable();
try
{
dt5 = FillData_CustomClaim();
}
catch
{
MessageBox.Show("cc");
}
if (dt5.Rows.Count >= 2)
{
try{
SheetData sheetData4 =
new
SheetData(CreateSheetData_CustomClaim(dt5));
var worksheetPart5 = workbookPart.AddNewPart<WorksheetPart>();
string relId5 = workbookPart.GetIdOfPart(worksheetPart5);
var sheet5 =
new
Sheet { Name = Dts.Variables["O_I_Div_nm"].Value.ToString()
+ "(Serv)", SheetId = 5, Id = relId5 };
sheets.Append(sheet5);
var worksheet5 =
new
Worksheet();
worksheet5.Append(sheetData4);
worksheetPart5.Worksheet = worksheet5;
worksheetPart5.Worksheet.Save();
}
catch (Exception
ex)
{
MessageBox.Show(ex.Message);
}
}
}
// Add the parts to the workbook and save
var workbook =
new
Workbook();
workbook.Append(fileVersion);
workbook.Append(sheets);
var worksheet =
new
Worksheet();
worksheet.Append(GenerateColumns_PaymentInfo());
worksheet.Append(sheetData1);
worksheetPart.Worksheet = worksheet;
worksheetPart.Worksheet.Save();
myWorkbook.WorkbookPart.Workbook = workbook;
myWorkbook.WorkbookPart.Workbook.Save();
myWorkbook.Close();
}
}
The Buildexcel () method will create an excel file (maximum 5 sheets - based on different conditions).
The method also invokes other User defined methods - eg: FillData_CustomClaim(), which excutes a SQL query and returns a datatable of results.
CreateSheetData_PaymentInfo () , is another method that is invoked by BuildExcel(). This method will return an List<opemxmlElement>, which is
basically the rows for the excel sheet. The rows are build out of the datatable returned by the FillData_..() methods.
July 10th, 2012 3:23am
It is a security issue to me and thus I trust the answer to this thread http://social.msdn.microsoft.com/Forums/en-US/vsx/thread/a64202cd-23cb-47c4-b92c-88e47354dfc9/ also is the one for your issue. A short excerpt: "Execute code in a new AppDomain
with the necessary credentials".Arthur My Blog
Free Windows Admin Tool Kit Click here and download it now
July 10th, 2012 8:53am