Система. UnauthorizedAccessException: Получение фабрики COM-класса для Word Interop перестало работать с ошибкой 80070005

Как прокомментировал gavsta707, вы можете искать переменную в контенте HTML с помощью регулярного выражения var dovizHesaplama = '(.+)'.

Затем декодируйте JSON, используя JSONDecoder. Обратите внимание, что вам нужно будет указать формат даты YYYY-MM-dd'T'HH:mm:ss.SSSSSSSZZZZZ.

Некоторый код, который делает это, может выглядеть как

import Foundation

struct ExchangeRates: Codable {

    struct Rate: Codable {
        let ask: Double
        let bid: Double
        let time: Date
    }

    struct OtherRates: Codable {
        let EUR: Rate
        let GBP: Rate
        let XAU: Rate
        let AUD: Rate
        let CAD: Rate
        let CHF: Rate
        let CNY: Rate
        let DKK: Rate
        let ETH: Rate
        let NOK: Rate
        let NZD: Rate
        let RUB: Rate
        let SAR: Rate
        let SEK: Rate
        let TRL: Rate
        let XAG: Rate
        let XPD: Rate
        let XPT: Rate
    }

    let USD: OtherRates
}

let jsonPattern = try NSRegularExpression(pattern: "var dovizHesaplama = '(.+)'")
let decoder = JSONDecoder()
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "YYYY-MM-dd'T'HH:mm:ss.SSSSSSSZZZZZ"
decoder.dateDecodingStrategy = .formatted(dateFormatter)

let data = try Data(contentsOf: URL(string: "https://yatirim.akbank.com/tr-tr/doviz/sayfalar/default.aspx")!)
if let string = String(data: data, encoding: .utf8) as NSString? {
    if let match = jsonPattern.firstMatch(in: string as String, range: NSRange(location: 0, length: string.length)) {
        let json = string.substring(with: match.range(at: 1))
        let rates = try decoder.decode(ExchangeRates.self, from: json.data(using: .utf8)!)
        print(rates)
    }
}
32
задан ROMANIA_engineer 5 February 2018 в 01:32
поделиться

4 ответа

Вот мое решение этой проблемы:

Я использую 64-разрядную версию Win 7 и Office 2007

Запустите программу « dcomcnfg -32 ». (Вы не можете найти компоненты word и excel, если он работает под 64-разрядной версией)

Перейдите в «Корень консоли / Службы компонентов / Компьютер / Мой компьютер / Конфигурация DCOM /» Найдите Microsoft Word и Excel и выберите свойства.

Перейдите в раздел «Безопасность» и выберите «Настроить» в разделе «Разрешения на конфигурацию» (при необходимости вы можете изменить и другие разрешения, но мне это не требовалось). Добавьте «IIS_IUSRS» и предоставьте ему «Полный доступ».

Теперь перейдите в «Личность» и выберите «Интерактивный пользователь».

Не забудьте нажать «ОК», когда закончите. : D

Надеюсь, это поможет вам с вашей проблемой, а также остальным, кто придет сюда и прочитает это.

33
ответ дан 27 November 2019 в 20:36
поделиться

Перейдите к реестру HKCR>TypeLib>{00020905-0000-0000-C000-000000000046}>8.7>0, затем удалите папку" win32", это для ошибки Word COM Class.

Переходят к реестру HKCR>TypeLib>{00020813-0000-0000-C000-000000000046}>1.9>0, затем удаляют папку" win32", это для ошибки Excel COM Class.

Попытка, что метод, что метод решил мою проблему.

0
ответ дан 27 November 2019 в 20:36
поделиться

Эта ошибка соответствует .NET System.UnauthorizedAccessException и обычно вызвана неправильными настройками доступа к COM-компоненту, который пытается создать ваш код.

Вы можете попробовать запустить утилиту dcomcnfg, перейдите по ссылке В настройках DCOM выберите нужный объект и разрешите доступ к нему учетной записи, под которой работает ваш код ASP.NET. Это должно решить вашу проблему.

1
ответ дан 27 November 2019 в 20:36
поделиться

Вы должны предоставить доступ к COM-компоненту Word для идентификации процесса ASP.NET ({MACHINE} \ ASPNET в IIS 5 или сетевая служба в IIS 6):

«Панель управления - Администрирование - Службы компонентов - Компьютеры - Мой компьютер - конфигурация DCOM »

Найдите « Документ Microsoft Word », щелкните правой кнопкой мыши - Настройки - Вкладка« Безопасность », предоставьте доступ (локальный и удаленный) для идентификации процесса ASP.NET (« ASPNET »для IIS 5, «Сетевая служба» для IIS 6).


Если затем вы получите «System.Runtime.InteropServices.COMException (0x800A13E9): Недостаточно памяти. Сохраните документ сейчас». исключение при открытии / добавлении документа (мой собственный опыт) , просто удалите временные файлы из папок% Temp% и \ ​​Content.Word.

8
ответ дан 27 November 2019 в 20:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: