gpt4 book ai didi

ASP.NET 通用提供程序 + Azure CSCFG

转载 作者:行者123 更新时间:2023-12-03 04:39:13 25 4
gpt4 key购买 nike

遵循 Hanselman 关于新 ASP.NET 通用提供程序的帖子: http://www.hanselman.com/blog/IntroducingSystemWebProvidersASPNETUniversalProvidersForSessionMembershipRolesAndUserProfileOnSQLCompactAndSQLAzure.aspx

如何配置它来读取 CSCFG 文件的连接字符串(而不是 web.config)?

最佳答案

我认为您不能让通用提供程序从 ServiceConfiguration 中读取(而不是 web.config)。但是您可以做的是每次部署应用程序或每次修改 ServiceConfiguration 时使用 ServiceConfiguration 中的信息修改 web.config。

在您的 WebRole.cs 中,您首先要编写一些执行此操作的代码。有一个topic on MSDN这有点解释了如何做到这一点:

  • 在提升模式下运行
  • 引用%WINDIR%\system32\inetsrv\Microsoft.Web.Administration.dll
  • 在 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事件,以更新此类更改的配置(您还可以在此处阻止实例重新启动)。

关于ASP.NET 通用提供程序 + Azure CSCFG,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11752039/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com