【问题标题】:issue with calling asp.net database function from WCF从 WCF 调用 asp.net 数据库函数的问题
【发布时间】:2012-08-15 18:40:18
【问题描述】:

我在主 asp.net 项目中有数据库函数,刚刚创建了单独的 wcf 项目并尝试在 wcf 中调用数据库函数。下面的代码是 svc 中的一个函数

public string ValidateUser(string username, string pwd)
{
    myApplication application = new myApplication();
    string resultString = string.Empty;
    try
    {
        resultString = application.Application.User.GetUserIdByUserName(username, pwd).ToString();
    }
    catch(Exception e)
    { resultString = "exception:" + e.Message; }

    return resultString;
}

数据库函数的作用是检查表(MSSQL)中是否存在用户名,如果存在则返回userId。

我认为这很简单,但每次我调用这个函数时,我都会得到nullException error,我猜这是因为数据库函数在符合要求时,它会在主项目中查找来自web.config 的连接字符串,但它存储null 值。

我在本地打开两个 VS 进行测试;一个是带有 wcf 项目的主 asp.net 项目,另一个是用于控制台应用程序的 VS 调用此 wcf。
任何建议或建议将不胜感激。

【问题讨论】:

  • 您应该将数据库代码分离到一个类库中,以便由 WCF 服务和 ASP.NET 应用程序调用。数据库代码必须更改为独立于 ASP.NET。 ASP.NET 应用程序中不应“调用”代码。

标签: asp.net wcf


【解决方案1】:

你能澄清一下哪个.config 文件有数据库连接字符串吗? WCF 服务项目还是调用它的 ASP.NET 项目?在 WCF 服务中运行的代码将从 WCF 项目的 .config 文件中获取其配置,如果连接字符串不存在,则不会从调用方获取。

【讨论】:

  • 我正在尝试从 asp.net 项目中获取连接字符串。 wcf 应该做的是重用 asp.net 项目中的现有功能。我应该只为 wcf 从头开始​​构建功能吗?我真的很想避免重复代码。
  • 这就是我在上面的评论中所说的。将公共代码分离到一个库中,供双方使用。
  • 这已经在库中,当我调用任何函数时,该库会从 asp.net 项目中的 web.config 文件中查找连接字符串。
  • 你确定吗?它通常的工作方式是代码从当前配置中获取配置。对于 Web 应用程序,这就是 web.config 文件的层次结构。对于桌面应用程序,即“application.exe.config”。
  • 是的,我正在使用库,每当调用此库时,它首先会从 asp.net 项目中获取连接字符串并触发所需的函数。如果我能给你我的解决方案的结构,我有 3 个项目,包括 asp.net 项目、存储所有通用功能的通用项目和从通用项目调用函数的 wcf 项目以及什么通用项目。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-09
  • 2018-05-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多