【发布时间】: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。 `
` 不是<applicationSettings>等。
标签: asp.net-mvc entity-framework wcf