2012-06-21 3 views
2

ASP.NET SQL 멤버 자격 공급자를 사용하는 웹 역할이 있습니다. 현재 구성은 Web.Config 파일에 있습니다. 연결 문자열을 Web.Config에있는 대신 Web Role 설정으로 구성하고 싶습니다. 내가 이것을 망쳤다는 주된 이유는 하늘 프로젝트에서 다른 호스팅 서비스 (dev, qa 등)에 게시하도록 구성 할 수 있기 때문입니다. 지금 당장은 원하는 때마다 수동으로 web.config를 편집해야합니다 다른 서비스에 게시하십시오.웹 역할에서 ASP.NET SQL 멤버 자격 공급자 구성

나는 이것을 달성 할 수있는 방법에 대한 몇 가지 아이디어가 있습니다.

  1. SQL 공급자를 래핑하고 사용자 지정 구성을 제공하는 사용자 지정 멤버 자격 공급자를 작성합니다.
  2. Web Role OnStart 메서드에 무엇인가 입력하여 Web.config 파일의 연결 문자열을 변경합니다.

누구나 전에 이와 같은 작업을했거나 어떤 옵션이 가장 좋았는지에 대한 권장 사항이 있습니까? 아니면이를 수행하는 방법에 대한 아이디어가 있습니까?

답변

3

Windows Azure SDK를 사용하면 환경별로 여러 개의 서비스 구성을 가질 수 있습니다. 그러나 web.config 수정은 좀 더 어렵습니다. 귀하의 경우에는 서비스 구성에서 연결 문자열을 읽고 web.config에 기록하는 코드 (또는 시작 작업)를 작성하는 것이 좋습니다.

앤디의 블로그 게시물 'Programmatically modify web.config on WebRole Startup은'당신이 할 수있는 방법을 정확하게 설명 : 푸른에 배포 할 때, (나는 푸른 해요

public override bool OnStart() 
{ 
    using (var server = new ServerManager()) 
    { 
     // get the site's web configuration 
     var siteNameFromServiceModel = "Web"; // TODO: 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(); 

     AddElement(appSettings, "deploymentId", RoleEnvironment.DeploymentId); 
     AddElement(appSettings, "internalEndpointPort", RoleEnvironment.CurrentRoleInstance.InstanceEndpoints 
      .First(t=>t.Key=="InternalEndpoint1").Value 
      .IPEndpoint.Port.ToString()); 

     server.CommitChanges(); 
    } 
    return base.OnStart(); 
} 
+0

무시 정규 Web.Config 파일이며, 설정은 GUI에서 촬영을 초보자)? – IrishChieftain

+1

블로그 게시물에 언급되지 않은 한 가지 점은 구성 변경 사항을 저장하려면 상승 된 권한으로 역할을 실행해야한다는 것입니다. –

+1

IrishChieftain, Web.config는 항상 배포됩니다 (여전히 올바르게 작동하려면 ASP.NET 웹 응용 프로그램이 필요합니다).이 코드를 사용하면 ServiceConfiguration의 설정으로 수정할 수 있습니다. –

관련 문제