Получение фабрики классов COM для компонента не удалось из-за 80070005 Доступ запрещен в приложении ASP.net MVC
Привет всем, у меня возникла проблема с получением вызова в офисе COM в Excel.
Вот мой код, который изматывает:
public async Task<bool> updateExcelSheets(string excelName, DateTime newDate, string excelPath)
{
//Loop through all the data columns and update them
int intX = 1;
bool skipParseCol = true;
Dictionary<string, string> resultsBack = new Dictionary<string, string>();
Dictionary<string, string> _tmpParms = new Dictionary<string, string>();
HELPer SQLHelper = new HELPer();
DataSet allData = new DataSet();
try
{
MSOIE.Application xlsApp = new MSOIE.Application();
// [FileName]
// | [UpdateLinks]
// | | [ReadOnly]
// | | | [Format]
// | | | | [Blanks]
// | | | | / \ [Ignore Read Only Recommended]
// | | | | | | |
// ▼ ▼ ▼ ▼ ▼ ▼ ▼
MSOIE.Workbook wb = xlsApp.Workbooks.Open(excelPath, 0, false, 5, "", "", true);
MSOIE.Sheets sheets = wb.Worksheets;
MSOIE.Worksheet ws = (MSOIE.Worksheet)sheets.get_Item(2); //Selecting DDValues tab
xlsApp.Visible = true;
//More code here........
}
catch (Exception e)
{
Console.WriteLine("{0} Exception caught.", e.Message);
}
return Task.FromResult(true).IsCompleted;
}
Как только код достигает MSOIE.Application xlsApp = new MSOIE.Application(); часть идет к исключению и e.Message говорит:
Не удалось получить фабрику класса COM для компонента с CLSID {00024500-0000-0000-C000-000000000046} из-за следующей ошибки: 80070005 Доступ запрещен. (Исключение из HRESULT: 0x80070005 (E_ACCESSDENIED)).
Я много искал, чтобы увидеть другие исправления, но, похоже, не работает для меня. Я пробовал:
1.In DCOMCNFG, right click on the My Computer and select properties.
2.Choose the COM Securities tab.
3.In Access Permissions, click Edit Defaults and add Network Service to it and give it Allow local access permission. Do the same for < Machine_name >\Users.
4.In Launch and Activation Permissions, click Edit Defaults and add Network Service to it and give it Local launch and Local Activation permission. Do the same for < Machine_name >\Users.
Кредит: ЗДЕСЬ
1.From the Start menu, click Run and type Dcomcnfg.exe.
2.In Component Services, click Console root, expand Component Services, expand Computers, expand My computer,expand DCOMConfig.
3.Search for Microsoft EXCEL 15.0 Object Library. Click on it.
4.Right click and select Properties.
5.On security tab, select Customize in "Launch and Activation" section.
6.Click edit and add identity of app pool under which you application is running.
7.Repeat above step for "Access Permission"
Кредит: ЗДЕСЬ
Go to your IIS Manager. → ApplicationPools → AdvancedSettings → Enable32BitApplication → True.
Кредит: ЗДЕСЬ
Теперь странным является то, что я просто выполнил обычную winform и имел тот же код, что и в моем проекте ASP.net MVC, и он прекрасно работает, когда добирается до этого MSOIE.Application xlsApp = new MSOIE.Application(); Строка кода, так что я не могу понять, в чем разница между двумя, которые заставили бы один работать, а другой (с тем же кодом) нет....
Любая помощь будет отличной! Спасибо!