新しい ASP.NET ユニバーサル プロバイダーに関する Hanselman の投稿: http://www.hanselman.com/blog/IntroducingSystemWebProvidersASPNETUniversalProvidersForSessionMembershipRolesAndUserProfileOnSQLCompactAndSQLAzure.aspx
web.config ではなく、CSCFG ファイルの接続文字列を読み取るようにどのように構成しますか?
新しい ASP.NET ユニバーサル プロバイダーに関する Hanselman の投稿: http://www.hanselman.com/blog/IntroducingSystemWebProvidersASPNETUniversalProvidersForSessionMembershipRolesAndUserProfileOnSQLCompactAndSQLAzure.aspx
web.config ではなく、CSCFG ファイルの接続文字列を読み取るようにどのように構成しますか?
(web.config ではなく) ServiceConfiguration から Universal Providers を読み取らせることはできないと思います。ただし、アプリケーションをデプロイするたびに、または ServiceConfiguration を変更するたびに、ServiceConfiguration からの情報で web.config を変更することができます。
WebRole.cs では、最初にこれを行うコードを記述します。MSDNには、これを行う方法を説明するトピックがあります。
これを OnStart メソッドに記述します (このコードを変更する必要があります)。
using (var server = new ServerManager())
{
// get the site's web configuration
var siteNameFromServiceModel = "Web"; // update this site name for your site.
var siteName =
string.Format("{0}_{1}", RoleEnvironment.CurrentRoleInstance.Id, siteNameFromServiceModel);
var siteConfig = server.Sites[siteName].GetWebConfiguration();
// get the appSettings section
var appSettings = siteConfig.GetSection("appSettings").GetCollection()
.ToDictionary(e => (string)e["key"], e => (string)e["value"]);
// reconfigure the machine key
var machineKeySection = siteConfig.GetSection("system.web/machineKey");
machineKeySection.SetAttributeValue("validationKey", appSettings["validationKey"]);
machineKeySection.SetAttributeValue("validation", appSettings["validation"]);
machineKeySection.SetAttributeValue("decryptionKey", appSettings["decryptionKey"]);
machineKeySection.SetAttributeValue("decryption", appSettings["decryption"]);
server.CommitChanges();
}
このトピックで取り上げていないのは、ServiceConfiguration の変更です (再デプロイせずにポータルから接続文字列を変更したとします)。そのため、RoleEnvironment.Changingイベントを処理して、そのような変更の構成を更新する必要もあります (ここでインスタンスの再起動を防ぐこともできます)。