programing

연결 문자열에 앰퍼샌드를 포함하는 방법은 무엇입니까?

yoursource 2021. 1. 14. 23:26
반응형

연결 문자열에 앰퍼샌드를 포함하는 방법은 무엇입니까?


간단한 앱에 Entity Framework 4를 사용하고 있으며 연결 자격 증명을 다음 연결 문자열에 굽고 싶습니다.

<connectionStrings>
    <add name="MyEntities"    
         connectionString="metadata=res://*/MyDataModel.csdl|res://*/MyDataModel.ssdl|res://*/MyDataModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=localhost\DEV;Initial Catalog=MyDB;UserId=myUser;Password=jack&jill;MultipleActiveResultSets=True&quot;" 
         providerName="System.Data.EntityClient" />
</connectionStrings>

그러나 암호 (변경할 수 없음)에는 앰퍼샌드가 포함되어 있습니다. ASP.NET은 다음을 던집니다.Configuration Error: An error occurred while parsing EntityName. Line XX, position YYY.

내가와 암호에 앰퍼샌드를 교체하는 경우 &amp;, 내가 얻을 SqlException: Login failed for user 'myUser'.보통이 트릭 작품,하지만 난 뭔가를 추측하고있어이 기술적으로 연결 문자열 내부의 연결 문자열이기 때문에 실패입니다.

여기서 무엇을해야합니까? 대부분의 수업에는 다음과 같은 코드가 포함됩니다.

using (var context = new MyEntities()) {
   // do work
}

업데이트 : 사용중인 자격 증명이 도메인 계정 인 것으로 밝혀 졌으므로 실제로 필요한 것은 Integrated Security=True암호가 아닌 연결 문자열에 있습니다.

허용 대답에 표시된대로 앰퍼샌드를 인코딩 해야 내가 그것을 테스트하지 않았습니다하지만, 잘 작동합니다.


모든 .config 파일 인 XML 문서에서와 같이 이스케이프 시퀀스를 사용해야합니다.

  • 앰퍼샌드 = & = &amp;
  • 보다 큼 => = &gt;
  • 보다 작음 = <= &lt;
  • 아포스트로피 = '= &apos;
  • 인용구 = "= &quot;

CDATA이러한 잘못된 문자를 사용할 수 있도록 태그를 사용할 수도 있습니다.

<![CDATA[ 그리고 끝 ]]>

<connectionStrings>
    <add name="MyEntities" connectionString="
        metadata=res://*/MyDataModel.csdl|res://*/MyDataModel.ssdl|res://*/MyDataModel.msl;
        provider=System.Data.SqlClient;
        provider connection string=&quot;
        Data Source=localhost\DEV;
        Initial Catalog=MyDB;UserId=myUser;
        Password=<![CDATA[jack&jill]]>;
        MultipleActiveResultSets=True&quot;" 
        providerName="System.Data.EntityClient" />
</connectionStrings>

참조 URL : https://stackoverflow.com/questions/3824351/how-to-include-ampersand-in-connection-string

반응형