在Hanselman关于新的ASP.NET通用提供者的帖子之后:http://www.hanselman.com/blog/IntroducingSystemWebProvidersASPNETUniversalProvidersForSessionMembershipRolesAndUserProfileOnSQLCompactAndSQLAzure.aspx
您如何将其配置为读取CSCFG文件的连接字符串,而不是web.config?
发布于 2012-08-01 12:02:41
我不认为您可以让通用提供程序从ServiceConfiguration (与web.config相反)中读取。但是,您可以做的是在每次部署应用程序时或每次修改web.config时使用ServiceConfiguration中的信息修改ServiceConfiguration。
在您的WebRole.cs中,您首先需要编写一些代码来完成此任务。有一个topic on MSDN可以解释如何做到这一点:
OnStart method (您需要更改以下代码):
使用(var server = new ServerManager()) { //获取站点的web配置var siteNameFromServiceModel = "Web";//为您的站点更新此站点名称。var siteName = string.Format("{0}_{1}",RoleEnvironment.CurrentRoleInstance.Id,siteNameFromServiceModel);var siteConfig = server.SitessiteName.GetWebConfiguration();//获取var appSettings段var appSettings =var .ToDictionary(e => (String)e“=>”,e=>(String)e“.ToDictionary”);//重新配置机器密钥var=>=var machineKeySection =varmachineKeySection.SetAttributeValue("validationKey",appSettings"validationKey");machineKeySection.SetAttributeValue(“validationKey”,appSettings“validationKey”);machineKeySection.SetAttributeValue(“validationKey”,appSettings"decryptionKey");machineKeySection.SetAttributeValue("decryptionKey",appSettings“decryptionKey”);server.CommitChanges();}
现在,本主题没有介绍对ServiceConfiguration的更改(假设您在没有重新部署的情况下修改了门户中的连接字符串)。这就是为什么您还需要处理RoleEnvironment.Changing事件,以更新此类更改的配置(您还可以在此处阻止实例重启)。
https://stackoverflow.com/questions/11752039
复制相似问题