C# 在Web.config中调用连接字符串时出现非法字符异常
我正在使用entity framework创建一个C#MVC4.5项目,在我的Web.config中设置了以下连接字符串:C# 在Web.config中调用连接字符串时出现非法字符异常,c#,.net,entity-framework,asp.net-mvc-4,C#,.net,Entity Framework,Asp.net Mvc 4,我正在使用entity framework创建一个C#MVC4.5项目,在我的Web.config中设置了以下连接字符串: <connectionStrings> <add name="Entities" connectionString="metadata=res://*/PersistenceModel.csdl|res://*/PersistenceModel.ssdl|res://*/PersistenceModel.msl;provider
<connectionStrings>
<add name="Entities"
connectionString="metadata=res://*/PersistenceModel.csdl|res://*/PersistenceModel.ssdl|res://*/PersistenceModel.msl;provider=System.Data.SqlClient;provider connection string="data source=.\sqlexpress;initial catalog=TravPro;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework""
providerName="System.Data.EntityClient" />
</connectionStrings>
这会引发“路径中的非法字符”异常:
[ArgumentException: Illegal characters in path.]
System.IO.Path.CheckInvalidPathChars(String path, Boolean checkAdditional) +10631190
System.IO.Path.Combine(String path1, String path2) +42
WebMatrix.Data.ConfigurationManagerWrapper.GetConnection(String name, Func`2 getConfigConnection, Func`2 fileExists) +208
WebMatrix.Data.ConfigurationManagerWrapper.GetConnection(String name) +91
WebMatrix.Data.Database.OpenNamedConnection(String name, IConfigurationManager configurationManager) +18
WebMatrix.Data.Database.Open(String name) +61
WebMatrix.WebData.DatabaseConnectionInfo.Connect() +42
WebMatrix.WebData.SimpleMembershipProvider.ConnectToDatabase() +25
WebMatrix.WebData.SimpleMembershipProvider.CreateTablesIfNeeded() +35
WebMatrix.WebData.WebSecurity.InitializeMembershipProvider(SimpleMembershipProvider simpleMembership, DatabaseConnectionInfo connect, String userTableName, String userIdColumn, String userNameColumn, Boolean createTables) +73
WebMatrix.WebData.WebSecurity.InitializeProviders(DatabaseConnectionInfo connect, String userTableName, String userIdColumn, String userNameColumn, Boolean autoCreateTables) +51
WebMatrix.WebData.WebSecurity.InitializeDatabaseConnection(String connectionStringName, String userTableName, String userIdColumn, String userNameColumn, Boolean autoCreateTables) +51
TravPro.Web.Filters.SimpleMembershipInitializer..ctor() in c:\Work\trunk\TravPro\TravPro.Web\Filters\InitializeSimpleMembershipAttribute.cs:43
有人能帮忙告诉我哪些字符需要转义,或者如何修复此异常吗?我能看到的唯一问题可能是您的“字符”-请尝试使用单引号代替您存储的连接字符串是用于实体框架的-它不是“常规”字符“ADO.NET连接字符串。实体框架连接字符串确实包含一个常规的ADO.NET连接字符串(提供者连接字符串中的位=……),但除此之外还有更多内容 另一方面,
WebSecurity
需要一个常规ADO.NET连接字符串作为输入-而不是一个实体框架连接字符串
因此,要解决此问题,您需要在配置文件的
部分中添加WebSecurity
的第二个连接字符串:
<connectionStrings>
<add name="Entities"
connectionString="metadata=res://*/PersistenceModel.csdl|res://*/PersistenceModel.ssdl|res://*/PersistenceModel.msl;provider=System.Data.SqlClient;provider connection string="data source=.\sqlexpress;initial catalog=TravPro;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework""
providerName="System.Data.EntityClient" />
<add name="RegularADONET"
connectionString="data source=.\sqlexpress;initial catalog=TravPro;integrated security=True;MultipleActiveResultSets=True;"
</connectionStrings>
我尝试了你的方式(@marc_s),但是我仍然有问题,尽管它确实引导我朝着解决问题的方向前进。我将连接字符串更改为:
<connectionStrings>
<add name="DefaultConnection"
connectionString="data source=.\sqlexpress;initial catalog=TravPro;integrated security=True;MultipleActiveResultSets=True;"
providerName="System.Data.SqlClient" />
<add name="Entities"
connectionString="metadata=res://*/PersistenceModel.csdl|res://*/PersistenceModel.ssdl|res://*/PersistenceModel.msl;provider=System.Data.SqlClient;provider connection string="data source=.\sqlexpress;initial catalog=TravPro;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework""
providerName="System.Data.EntityClient" />
</connectionStrings>
谢谢你给我指明了正确的方向太爱了
string con = ConfigurationManager.ConnectionStrings["RegularADONET"].ConnectionString;
WebSecurity.InitializeDatabaseConnection(con, "UserProfile", "UserId", "UserName", true);
<connectionStrings>
<add name="DefaultConnection"
connectionString="data source=.\sqlexpress;initial catalog=TravPro;integrated security=True;MultipleActiveResultSets=True;"
providerName="System.Data.SqlClient" />
<add name="Entities"
connectionString="metadata=res://*/PersistenceModel.csdl|res://*/PersistenceModel.ssdl|res://*/PersistenceModel.msl;provider=System.Data.SqlClient;provider connection string="data source=.\sqlexpress;initial catalog=TravPro;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework""
providerName="System.Data.EntityClient" />
</connectionStrings>
WebSecurity.InitializeDatabaseConnection("DefaultConnection",
"UserProfile",
"UserId",
"UserName",
true);