Почему я получаю SEHException при вызове RoleEnvironment. GetConfigurationSettingValue (“MYKEY”)?

Я пытаюсь звонить RoleEnvironment.GetConfigurationSetting("SOMEKEY") как так:

public partial class AzureBasePage : System.Web.UI.Page
{
    protected ChargifyConnect Chargify
    {
        get {
            if (this._chargify == null) {
                this._chargify = new ChargifyConnect();
                this._chargify.apiKey = RoleEnvironment.GetConfigurationSettingValue("CHARGIFY_API_KEY");
            }
            return this._chargify;
        }
    }
    private ChargifyConnect _chargify = null;
}

Мой ключ ServiceConfiguration.cscfg похож на это:

<Setting name="CHARGIFY_API_KEY" value="AbCdEfGhIjKlMnOp" />

И я получаю эту ошибку:

Детали исключения: Система. Время выполнения. InteropServices. SEHException: Внешний компонент выдал исключение.

[SEHException (0x80004005): Внешний компонент выдал исключение.] RoleEnvironmentGetConfigurationSettingValueW (UInt16*, UInt16*, UInt32, UInt32*) +0 Microsoft. WindowsAzure. ServiceRuntime. Внутренний. InteropRoleManager. GetConfigurationSetting (Имя строки, String& мочат), +92 Microsoft. WindowsAzure. ServiceRuntime. RoleEnvironment. GetConfigurationSettingValue (Представляют configurationSettingName в виде строки), +67 ChargifyNET.ChargifyAzurePage.get_Chargify () в C:\NetProjects\ChargifyDotNET\Source\Chargify.NET\ChargifyAzurePage.cs:26 Chargify. Azure. _ Значение по умолчанию. Page_Load (Объектный отправитель, EventArgs e) в C:\NetProjects\ChargifyDotNET\Source\Chargify.Azure\Default.aspx.vb:8 Системе. Сеть. UI.Control. OnLoad (EventArgs e) +99 Систем. Сеть. UI.Control. LoadRecursive () +50 Систем. Сеть. UI.Page. ProcessRequestMain (булевская переменная includeStagesBeforeAsyncPoint, булевская переменная includeStagesAfterAsyncPoint) +627

38
задан Kori 2 June 2010 в 14:37
поделиться

1 ответ

Вы получите исключение SEHException, если попытаетесь получить доступ к RoleEnvironment, если вы не работаете в фабрике разработки или фабрике Azure. Я считаю, что вы случайно запускаете свой веб-сайт на сервере разработки asp.net, что означает, что вы не находитесь в структуре разработки (я подтвердил, что это вызовет исключение SEHException). Другими словами, вы либо установили проект своего веб-сайта в качестве запускаемого проекта, либо щелкнули его правой кнопкой мыши и сказали запустить.

Вы должны установить сам облачный проект в качестве запускаемого, после чего ваш веб-сайт будет по умолчанию работать через порт 81. Облачный проект - это проект, в состав которого входят все определения ваших ролей. Вы можете посмотреть на адресную строку вашего браузера и легко определить, работаете ли вы на сервере asp.net dev, потому что вы будете использовать какой-то случайный номер порта вместо порта 81.

Убедитесь, что вы работаете. в фабрике разработки или фабрике Azure, проверив RoleEnvironment.IsAvailable . Если это правда, вы можете безопасно вызывать что угодно в RoleEnvironment. Если это ложь, вы не работаете в ткани.

85
ответ дан 27 November 2019 в 03:21
поделиться
Другие вопросы по тегам:

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