2010-09-29 29 views
39

Tôi đang sử dụng Entity Framework 4 cho một ứng dụng đơn giản và muốn nướng thông tin kết nối của tôi vào chuỗi kết nối sau:Cách bao gồm ký hiệu và chuỗi kết nối?

<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> 

Tuy nhiên, mật khẩu (mà tôi không thể thay đổi) chứa một dấu. ASP.NET ném: Configuration Error: An error occurred while parsing EntityName. Line XX, position YYY.

Nếu tôi thay thế các dấu trong mật khẩu với &amp;, tôi nhận được một SqlException: Login failed for user 'myUser'. Thông thường thủ thuật này tác phẩm, nhưng tôi đoán rằng một cái gì đó là không bởi vì đây là về mặt kỹ thuật một chuỗi kết nối bên trong một kết nối chuỗi.

Tôi nên làm gì ở đây? Hầu hết các lớp học của tôi bao gồm mã như:

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

Cập nhật: Nó chỉ ra rằng các thông tin tôi đang sử dụng là một tài khoản miền, vì vậy những gì tôi thực sự cần là Integrated Security=True trong chuỗi kết nối chứ không phải là một mật khẩu.

Mã hóa ký hiệu và được chỉ ra trong câu trả lời được chấp nhận nên hoạt động tốt, mặc dù tôi chưa thử nghiệm.

Trả lời

75

Bạn sẽ cần phải sử dụng các chuỗi thoát như bạn làm đối với bất kỳ tài liệu XML nào, tất cả các tệp .config là.

  • Ký hiệu & = & = &amp;
  • Lớn hơn => = &gt;
  • ít hơn = < = &lt;
  • Apostrophe = '= &apos;
  • Quote = "= &quot;

Bạn cũng có thể sử dụng CDATA thẻ để bạn có thể sử dụng các ký tự bất hợp pháp

<![CDATA[ và kết thúc với ]]>

<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> 
+0

Tôi đã thử điều đó, như đã nêu trong câu hỏi của mình. Dường như mật khẩu sai được gửi cùng với Entity Framework. – user403830

+0

Đó thực sự là tất cả những gì bạn cần để làm cho nó hoạt động. – hunter

+0

Ngoài ra, làm cho bạn đã thử đăng nhập vào trường hợp SQL Server bằng cách sử dụng thông tin đăng nhập trong chuỗi kết nối của bạn bên ngoài ứng dụng của bạn – hunter

0

…this is technically a connection string inside a connection string

Bạn đã cố gắng thoát hai lần?

&amp;amp; 
Các vấn đề liên quan