我试图像这样调用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 key 如下所示:
<Setting name="CHARGIFY_API_KEY" value="AbCdEfGhIjKlMnOp" />

我得到这个错误:

最佳答案

如果您未在开发结构或Azure结构中运行,则尝试访问RoleEnvironment时将获得SEHException。我相信您无意间在asp.net开发服务器下运行了您的网站,这意味着您不在dev结构中(我已经确认这会引发SEHException)。换句话说,您已经将您的网站项目设置为启动项目,或者右键单击了该项目并要求其运行。

您必须将云项目本身设置为启动项目,然后默认情况下将显示您的网站在端口81上运行。云项目是具有所有角色定义作为其成员的项目。您可以查看浏览器的URL栏,轻松判断您是否在asp.net开发服务器中运行,因为您将使用某个随机端口号而不是端口81。

您应该通过检查RoleEnvironment.IsAvailable来确保您在dev结构或Azure结构中运行。如果是这样,您可以安全地在RoleEnvironment中调用任何东西。如果为假,则说明您不在结构内运行。

关于c# - 为什么在调用RoleEnvironment.GetConfigurationSettingValue (“MYKEY”时得到SEHException?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2957938/

10-09 20:49