Request for the permission of type 'FileIOPermission' failed

Hi All,

I need help in processing my batch job class.

Here is the screenshot of error.

and here are the classes invloved

ATM_BATCH
run
public void run()
{
ATM_Interface generate = new ATM_Interface();
;
permission = new InteropPermission(Interopkind::ClrInterop);
permission.assert();

generate.run();

}

ATM_INTERFACE
run
public void run()
{
;
ATM_Interface::ImportFromATM();
}

ATM_INTERFACE
ImportfromATM
public static boolean ImportFromATM()
{
InterfaceFileDirectory iFileDirectory;
LedgerJournalTable ledgerJournalTable;
LedgerJournalTrans ledgerJournalTrans;
utcdatetime dateNow;
date nowDate;
TransDate transDate;
str strDate, strTransDate, description;
Amount amountDebit, amountCredit;

CommaIo csvFileHeader, csvFileLines;
Filename filenameH, filenameL;
container readCon1, readCon2;
NumberSequenceTable numberSequenceTable;
Voucher voucher;
LedgerJournalCheckPost ledgerJournalCheckPost;
Set permissionSet;
;
//initialize
amountDebit = 0;
amountCredit = 0;

//select directory path of the ATM output file
dateNow = System.DateTime::get_Now();
nowDate = datetimeutil::date(dateNow);
strDate = date2str(nowDate,321,2,0,2,0,4);
SELECT * FROM iFileDirectory
WHERE iFileDirectory.InterfaceCode == “ATM”;
filenameH = iFileDirectory.InterfaceFilePath + “\ATMH_” + strDate + “.txt”;
filenameL = iFileDirectory.InterfaceFilePath + “\ATML_” + strDate + “.txt”;

csvFileHeader = new CommaIo(filenameH, ‘rw’);
csvFileLines = new CommaIo(filenameL, ‘rw’);

readCon1 = csvFileHeader.read();
readCon2 = csvFileLines.read();
try
{
if (csvFileHeader && csvFileLines)
{
ttsbegin;
while(readCon1/csvFileHeader.status() == IO_Status::Ok/)
{
description = conPeek(readCon1,3);

ledgerJournalTable.clear();
ledgerJournalTable.initValue();
ledgerJournalTable.JournalNum = JournalTableData::newTable(ledgerJournalTable).nextJournalId();
ledgerJournalTable.journalType = LedgerJournalType::Daily;
ledgerJournalTable.JournalName = conPeek(readCon1,1);
ledgerJournalTable.Name = description;
ledgerJournalTable.initFromLedgerJournalName(ledgerJournalTable.JournalName);
ledgerJournalTable.insert();

readCon1 = csvFileHeader.read();
//numberSequenceTable = NumberSequenceTable::find(LedgerJournalName::find(ledgerJournalTable.JournalName).VoucherSeries);

//voucher = NumberSeq::newGetVoucherFromCode(numberSequenceTable.NumberSequence).voucher();

while(readCon2/csvFileLines.status() == IO_Status::Ok/)
{
//assigning transaction date
strTransDate = conPeek(readCon2,2);
transDate = str2date(strTransDate, 213);

//assigning debit and credit
amountDebit = conPeek(readCon2,6);
amountCredit = conPeek(readCon2,7);

ledgerJournalTrans.clear();
ledgerJournalTrans.initValue();

ledgerJournalTrans.voucher = conPeek(readCon2,1); //voucher;
ledgerJournalTrans.JournalNum = ledgerJournalTable.JournalNum;
ledgerJournalTrans.Txt = conPeek(readCon2,5);
ledgerJournalTrans.transDate = transDate;
ledgerJournalTrans.AccountType = LedgerJournalACType::Ledger;
ledgerJournalTrans.AccountNum = conPeek(readCon2,4);

ledgerJournalTrans.AmountCurDebit = amountDebit;
ledgerJournalTrans.AmountCurCredit = amountCredit;
ledgerJournalTrans.Company = strLRTrim(conPeek(readCon2,13));
ledgerJournalTrans.CurrencyCode = “PHP”;
ledgerJournalTrans.Dimension[1] = strLRTrim(conPeek(readCon2,9));
ledgerJournalTrans.Dimension[2] = strLRTrim(conPeek(readCon2,10));
ledgerJournalTrans.Dimension[3] = strLRTrim(conPeek(readCon2,11));
ledgerJournalTrans.insert();

readCon2 = csvFileLines.read();
}

ledgerJournalCheckPost = ledgerJournalCheckPost::newLedgerJournalTable(ledgerJournalTable,NoYes::Yes);
ledgerJournalCheckPost.run();
}
ttscommit;

}
}
catch(Exception::Error)
{
info(strFmt("%1",Exception::Error));
}

return true;
}

Thank you

Is your class runOn property set to “called from” or “server”?

called from

The error tells you that you forgot to use FileIOPermission class to grant the code permissions to access the file.

Please look at MSDN: Code Access Security for more information.

Can your file be accessed from the AOS if it runs from he server? and use “FileIoPermission”.