Я пытаюсь звонить 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
Вы получите исключение SEHException, если попытаетесь получить доступ к RoleEnvironment, если вы не работаете в фабрике разработки или фабрике Azure. Я считаю, что вы случайно запускаете свой веб-сайт на сервере разработки asp.net, что означает, что вы не находитесь в структуре разработки (я подтвердил, что это вызовет исключение SEHException). Другими словами, вы либо установили проект своего веб-сайта в качестве запускаемого проекта, либо щелкнули его правой кнопкой мыши и сказали запустить.
Вы должны установить сам облачный проект в качестве запускаемого, после чего ваш веб-сайт будет по умолчанию работать через порт 81. Облачный проект - это проект, в состав которого входят все определения ваших ролей. Вы можете посмотреть на адресную строку вашего браузера и легко определить, работаете ли вы на сервере asp.net dev, потому что вы будете использовать какой-то случайный номер порта вместо порта 81.
Убедитесь, что вы работаете. в фабрике разработки или фабрике Azure, проверив RoleEnvironment.IsAvailable
. Если это правда, вы можете безопасно вызывать что угодно в RoleEnvironment. Если это ложь, вы не работаете в ткани.