c# - Entity Framework - 底层提供程序在 ConnectionString 上失败

标签 c# asp.net wcf entity-framework connection

在使用 Entity Framework 时,我将其拆分为自己的项目:

  • RivWorks.Model - 包含实体模型
  • RivWorks.Controller - 使用实体模型并包含业务规则
  • RivWorks.View.Web - 网站
  • RivWorks.View.Services - WCF 项目

网站上的一切都运行良好。我能够调用 Controller 并取回有效模型。当我从 Web.Service 尝试同样的事情时,我收到了这个错误:

ERROR:
The underlying provider failed on ConnectionString.
STACK TRACE:
at System.Data.EntityClient.EntityConnection.ChangeConnectionString(String newConnectionString)
at System.Data.EntityClient.EntityConnection..ctor(String connectionString)
at System.Data.Objects.ObjectContext.CreateEntityConnection(String connectionString)
at System.Data.Objects.ObjectContext..ctor(String connectionString, String defaultContainerName)
at RivWorks.Model.Entities.RivFeedsEntities1..ctor(String connectionString)
at RivWorks.Model.FeedStoreReadOnly..ctor(String connectionString)
at RivWorks.Controller.ProductManager.LookupProduct(String productID, String sku, String urlRef, String env, String logPath)

我有点困惑为什么并通过错误日志挖掘我终于弄清楚连接字符串没有从网站的配置文件中读取。所以,我添加了一些代码来捕获它,现在,将这些值硬编码在其中。比如:

public dataObjects.NegotiateSetup LookupProduct(string productID, string sku, string urlRef, string env, string logPath)
{
    string feedConnString = "";
    string rivConnString = "";

    log.InitializeLogFile(logPath);
    dataObjects.NegotiateSetup resultSet = new dataObjects.NegotiateSetup();

    try { feedConnString = AppSettings.FeedAutosEntities_connString; }
    catch { feedConnString = @"metadata=res://*/Entities.FeedEntities.csdl|res://*/Entities.FeedEntities.ssdl|res://*/Entities.FeedEntities.msl;provider=System.Data.SqlClient;provider connection string='Data Source=***.***.***.***;Initial Catalog=******;Persist Security Info=True;User ID=******;Password="******";MultipleActiveResultSets=True'"; }

    try { rivConnString = AppSettings.RivWorkEntities_connString; }
    catch { rivConnString = @"metadata=res://*/Entities.RivEntities.csdl|res://*/Entities.RivEntities.ssdl|res://*/Entities.RivEntities.msl;provider=System.Data.SqlClient;provider connection string='Data Source=******;Initial Catalog=******_Dev;Persist Security Info=True;User ID=******;Password="******";MultipleActiveResultSets=True'"; }

    try
    {
        using (RivFeedsEntities1 _dbFeed = new FeedStoreReadOnly(feedConnString).ReadOnlyEntities())
        {
            using (RivEntities _dbRiv = new RivWorksStore(rivConnString).NegotiationEntities())
            {

但是,唉,还是报上面的错误!有什么想法吗?

最佳答案

我知道您一直在处理连接字符串以清理它们,但我猜您没有将密码周围的 " 放入?

它们真的是必需的吗?

关于c# - Entity Framework - 底层提供程序在 ConnectionString 上失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2158853/

相关文章:

c# - 如何在 MVC Razor DropDownList 中使用 Html.Raw?

c# - ExpectedException.NoExceptionMessage 中的字符串出现在哪里?

c# - 编写 linq 查询以获取选定的名称计数

asp.net - 注销后 CSS 渲染问题

c# - 您可以在浏览器外使用集成 Windows 身份验证吗?

c# - params 关键字可以通过 WSDL 定义来表达吗

c# - 使用 SKYPE4COM 获取个人资料图片

c# - 我们可以创建自定义 HTTP 状态代码吗?

c# - 跨网络更新面板失败

c# - WCF 服务命名空间冲突,全部在同一个解决方案中