Azure门户中的连接字符串/设置 - 它是xdt:Transform =“SetAttributes”,xdt:Transform =“Insert”还是混合?

时间:2017-06-30 08:44:21

标签: azure azure-web-sites azure-web-app-service

我最近遇到了网站问题,而堆栈跟踪暗示了connectionstring为null。这是在我移动(即将节点从xml文件中删除,粘贴到门户网站中)后,从web.config到azure portal的connstr,所以connstr没有被引用到web配置

在一个视频博客中,Scott Hanselman谈到了覆盖web.config的门户网站设置,但是从来没有详细说明在部署的Web配置中是否必须存在密钥才能应用azure门户网站值

这引发了一个问题 - 如果一个设置根本不在web.config中(即没有xml节点说<add key="blah" value="debugblah" />),那么门户网站中的设置是否有效?

3 个答案:

答案 0 :(得分:1)

  

是xdt:Transform =“SetAttributes”,xdt:Transform =“Insert”还是hybrid?

这是混合

或者,可能

Portal执行删除操作,然后执行插入

这意味着:

  • 如果设置仅在portal.azure.com中配置,那么您的应用将看到portal.azure.com中设置的值
  • 如果设置仅在wwwroot文件夹中的web.config文件中配置,那么您的应用程序将看到web.config文件中设置的值
  • 如果在portal.azure.com和web.config文件中都配置了该设置,则应用程序将在portal.azure.com中看到设置的值

如果您将调试/开发配置上传到实际网站,如果门户网站设置包含实时设置详细信息,请不要担心:)

感谢Amor用于验证此

的方法

答案 1 :(得分:1)

  

如果某个设置根本不在web.config中(即没有xml节点说<add key="blah" value="debugblah" />),那么门户网站中的设置是否有效?

简短的回答是肯定的。要简单测试一下,您可以使用以下代码。

public ActionResult Index()
{
    string appSetting1 = ConfigurationManager.AppSettings["setting1"];
    string connectionString1 = ConfigurationManager.ConnectionStrings["connectionString1"]?.ConnectionString;
    return Content(string.Format("appSetting1:{0},connectionString1:{1}", appSetting1, connectionString1));
}

在Azure门户中添加参数后,我们可以从ConfigurationManager获取应用程序设置和连接字符串。

enter image description here

以下是索引页面的结果。

appSetting1:setting1Value,connectionString1:connectionString1Value

当我们为Entity Framework使用连接字符串时有一个例外。 EF的连接字符串将包含无法在Azure门户中设置的providerName属性。因此,如果我们需要使用providerName进行连接字符串设置,我们需要在配置文件中配置连接字符串。

<add name="DataContext" connectionString="dummy" providerName="System.Data.EntityClient" />

答案 2 :(得分:0)

是的,它会起作用。

sess = tf.Session(config=config)文件中不必存在该设置。如果它存在于Web应用程序的连接字符串应用程序设置(在门户中或通过AzureRM设置)中,则应用程序将可以看到它。