2011-04-28 2 views
2

내 web.config의 연결 문자열을 암호화하고 싶습니다. Here이 작업을 수행하는 방법에 대한 좋은 예제를 발견했습니다. 이것을 구현하고 개발 컴퓨터에서이 소프트웨어를 찾는다. 내가 공급자에 업로드하면 그러나, 다음과 같은 오류와 함께 작동하지 않습니다Web.Config의 연결 문자열 암호화가 실패합니다.

[SecurityException가 :. 요청이 실패] System.Configuration.DpapiProtectedConfigurationProvider.Encrypt (있는 XmlNode 노드)

this을에서 블로그 내가 읽었습니다, 이것은 웹 때문에 아마 중간 신뢰에서 실행되므로 WebConfigurationManager.OpenWebConfiguration 사용할 수 없습니다. 이 대신 WebConfigurationManager.GetSection을 사용해야합니다. 내가 제안 된 섹션을 얻을 경우, ProtectSection에 대한 호출은 다음과 같은 오류 메시지와 함께 실패합니다

System.InvalidOperationException :이 작업은 실행

에 적용되지 않습니다

사람이 솔루션에 저를 이끌 수, web.config 파일에서 (런타임에) 연결 문자열을 인코딩 (및 디코딩) 할 수있는 방법은 무엇입니까?


업데이트
진짜 질문에 답하지만 호스팅은 웹에 완전 신뢰를주고 지금, 모두가 잘 작동하지 않습니다. 나는 quesion을 열어 둔 채 누군가가 원래의 질문에 대한 해결책을 게시하고이 문제에 대해 동일한 문제를 가지고 있지만 완전히 신뢰하지는 못하게하는 데 도움을 줄 수 있습니다.

답변

1

또한

UPDATE

static void ToggleWebEncrypt() 
{ 
    // Open the Web.config file. 
    Configuration config = WebConfigurationManager. 
     OpenWebConfiguration("~"); 

    // Get the connectionStrings section. 
    ConnectionStringsSection section = 
     config.GetSection("connectionStrings") 
     as ConnectionStringsSection; 

    // Toggle encryption. 
    if (section.SectionInformation.IsProtected) 
    { 
     section.SectionInformation.UnprotectSection(); 
    } 
    else 
    { 
     section.SectionInformation.ProtectSection(
      "DataProtectionConfigurationProvider"); 
    } 

    // Save changes to the Web.config file. 
    config.Save(); 
} 

http://msdn.microsoft.com/en-us/library/89211k9b%28v=vs.80%29.aspx에서 서비스 계정의 Web.config에 쓰기 권한이 있는지 확인합니다. 또한 Web.config에서 서비스 계정에 대한 쓰기 권한을 부여하면 응용 프로그램의 보안 영역이 다소 증가한다는 것에주의하십시오. 위험을 이해하고 수용하는 경우에만 그렇게하십시오.

+0

답변 해 주셔서 감사합니다. 그러나 구성은 다음과 같습니다. config = WebConfigurationManager.OpenWebConfiguration ("~"); 예외의 근원 인 IIS는 그것을 실행하지 않고 SecurityException을 던집니다! – HCL

+0

@HCL : 서비스 계정에 web.config 파일에 대한 쓰기 권한이 있습니까? – kbrimington

+0

@kbrimington : 예, hoster의 구성 도구를 사용하면 디렉토리 기반에 대한 권한을 부여 할 수 있으며 루트 (또한 가상 디렉터리)에 대해 testwise IUSR 읽기/쓰기 권한을 부여했습니다. – HCL