外部WCF服务库获取不到系统内部的数据库连接!以下称之为EntityManager.
我创建了一个外部的WCF服务库,然后将WCF服务库寄宿在Windows Service上进行部署。当我在系统内通过Form直接访问Form相关Task的时候,我可以直接在Task中获取到系统的EntityManager,从而在接口内部去实现数据库相关操作。
我现在遇到的问题是:当我的WCF服务库作为一个外部库进行部署时,将不会有系统Form去直接调用接口实现的Task,我自然也没法获得系统内部的EntityManager。这也就导致了我的接口无法完整运行。
当我用Form表单直接执行LoginJobTask可以获取到EntityManager,但是当整个WCF服务库单独部署出去的时候,我就获取不到了!
[SampleManagerTask("LoginJobTask")] // 将当前类标记为Task
public class LoginJobTask : SampleManagerTask // SampleManagerTask为所有Task的父类,数据库操作对象(下文中的EntityManager)也来自这个父类,
{
public string LoginSingleJobByWorkflow(string json)
{
ResponseSingle resp = ResponseUtil.GetDefaultResponse();
try
{
string errMsg = string.Empty;
// 校验Json数据是否合法
if (!JsonUtil.IsValid(json))
{
errMsg = string.Format("{0} JSON Data:{1}", ExceptionConstant.INVALID_JSON_DATA, json);
Logger.Error(errMsg);
return JsonUtil.ObjectToJsonStr(new ResponseSingle("", ResponseUtil.CODE_FAIL, ExceptionConstant.INVALID_JSON_DATA, errMsg));
}
// 将Json字符串转化为Json对象
JObject jObject = JsonUtil.JsonStrToJsonObject(json);
// 获取Type
JToken type = jObject[WebInterfaceWorkflowConfigPropertyNames.Type];
// 判断Type字段信息
if (JsonUtil.IsEmpty(type))
{
errMsg = string.Format("Property {0} do not exist.", WebInterfaceWorkflowConfigPropertyNames.Type);
Logger.Error(errMsg);
return JsonUtil.ObjectToJsonStr(new ResponseSingle("", ResponseUtil.CODE_FAIL, errMsg, errMsg));
}
// 获取调用Workflow的配置信息
IQuery queryWorkflowConfig = EntityManager.CreateQuery(TableNames.WebInterfaceWorkflowConfig);
queryWorkflowConfig.AddEquals(WebInterfaceWorkflowConfigPropertyNames.Type, type.ToString());
queryWorkflowConfig.AddAnd();
queryWorkflowConfig.AddEquals(WebInterfaceWorkflowConfigPropertyNames.Removeflag, false);
因为系统的底层实现以及大量源码都是美国人研发的,并且都做了封装。所以我现在也不清楚系统底层到底是如何往Task中注入EntityManager的。但是我觉得如果各位前辈有做过类似独立WCF服务库开发的,可能也会遇到类似问题,所以在此提问,看能否获得一些提示或启发。谢谢各位前辈!