【问题标题】:WCF Project Can't Find Connection StringWCF 项目找不到连接字符串
【发布时间】:2018-11-26 22:55:15
【问题描述】:

当服务到达我的端点时,我的应用程序连接到数据库服务器时出现问题。我正在使用与 Web 服务应用程序相同的解决方案中的控制台应用程序进行测试。然后,Web 服务应用程序使用 GetCourseDetails 方法连接到调用数据库的应用程序。

  public ApiResponse RunCourseReports()
    {
        ApiResponse api = new ApiResponse();
        List<string> Errors = new List<string>();
        try
        {
            LCVista.Models.Courses report = new LCVista.Models.Courses();
            report.ParseCourseDetailsFromSumtotal();


        //    if (Errors.Count > 0)
        //    {
        //        throw new Exception();

        //    }
        //    api.Message = "";
        //    api.Status = "Success";
          return api;
        }
        catch (Exception e)
        {
            api.Status = "Error" + e.Message.ToString();
            api.Message = e.Message;
            //api.Message = "Error";

            return api;
        }
        }

它尝试使用实体框架来获取课程:

 public List<tblStage_Course_Details> GetCourseDetails()
    {
        List<tblStage_Course_Details> courseDetailsList = new List<tblStage_Course_Details>();

        try
        {
            using (var context = new CourseDetailsContext())
            {
                List<tblStage_Course_Details> courseDetailsLista = (context.tblStage_Course_Details.Where(s => s.Processed == false)).ToList();
            }
        }
        catch (Exception e)
        {
            string message = e.Message;
            string api = "Course Details";
            SaveErrors(message, api, "Getting Course Details", "error");
        }


        return courseDetailsList;
    }

我收到一个异常,提示“在应用程序配置文件中找不到名为 'CourseDetailsContext' 的连接字符串。”

CourseDetailsContext 如下:

 public partial class CourseDetailsContext : DbContext
{
    public CourseDetailsContext()
        : base("name=CourseDetailsContext")
    {
    }

    public virtual DbSet<tblStage_Course_Details> tblStage_Course_Details { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Entity<tblStage_Course_Details>()
            .Property(e => e.Code)
            .IsUnicode(false);

所有 Web Config 文件都有 CourseDetailsContext 的连接字符串。我测试了连接字符串,它可以工作。问题是在我的项目中调用 Web 服务的控制台应用程序没有传达连接字符串。

【问题讨论】:

  • 控制台不会传递连接字符串,它将是 Web 服务的 web.config,它应该包含连接字符串。虽然当您说“然后 Web 服务应用程序连接到调用数据库的应用程序”时不清楚。你这是什么意思? Web 服务如何“连接”到应用程序?它是通过引用访问对象吗? (在这种情况下,连接字符串将在 Web 服务中)或其他一些通信渠道? (连接字符串将属于该其他应用程序)
  • @StevePy GetCourseDetails() 位于处理信息的应用程序中。测试时,我使用控制台应用程序来调用 WCF 项目。然后,该项目使用 GetCourseDetails() 连接到应用程序。在生产中,服务将调用 WCF 应用程序来运行 GetCourseDetails() 以从数据库中获取课程。所有的 Web 配置都有连接字符串。我正在使用 EF 6。
  • 是的,但是 WCF 项目如何连接到该应用程序?它是对另一个程序集(引用)的引用还是通过命名管道之类的调用?
  • 这是一个参考
  • 那么您在 WCF Web 服务 web.config 中声明了 CourseDetailsContext 连接字符串? (这是预期的位置)这将位于 WCF 服务的主文件夹中,并在 connectionStrings 部分中声明。 IE。 ` ` 不是&lt;applicationSettings&gt; 等。

标签: asp.net-mvc entity-framework wcf


【解决方案1】:

将连接字符串添加到控制台应用的 App.config 并在控制台应用上安装实体框架。

【讨论】:

  • 你的正确我也错过了。我在这里的项目一团糟,在本地测试时错过了 WCF 和控制台上的连接字符串。
猜你喜欢
  • 2020-04-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多