我最近遇到了网站问题,而堆栈跟踪暗示了connectionstring为null。这是在我移动(即将节点从xml文件中删除,粘贴到门户网站中)后,从web.config到azure portal的connstr,所以connstr没有被引用到web配置
在一个视频博客中,Scott Hanselman谈到了覆盖web.config的门户网站设置,但是从来没有详细说明在部署的Web配置中是否必须存在密钥才能应用azure门户网站值
这引发了一个问题 - 如果一个设置根本不在web.config中(即没有xml节点说<add key="blah" value="debugblah" />
),那么门户网站中的设置是否有效?
答案 0 :(得分:1)
是xdt:Transform =“SetAttributes”,xdt:Transform =“Insert”还是hybrid?
这是混合
或者,可能
Portal执行删除操作,然后执行插入
这意味着:
如果您将调试/开发配置上传到实际网站,如果门户网站设置包含实时设置详细信息,请不要担心:)
感谢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获取应用程序设置和连接字符串。
以下是索引页面的结果。
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设置)中,则应用程序将可以看到它。