2 zhaoshiwu zhaoshiwu 于 2014.12.18 15:58 提问

wcf使用单利模式创建类发生异常

我在wcf服务中.自定义一个类目的是连接数据库,这个类是通过单利模式创建的.但是在客户端调用的时候,这个类竟然无法创建对象.请wcf高手看看.

 public class TestSer : ITestSer
{
...
public LoginParam GetLoginObj()
{
LoginParam loginobj = null;
MySQLHelper sqlhelper = MySQLHelper.CreatInstance();//自定义类用于连接数据库
string sqlstr = "select * from c_task";
int execcount = 0;
try
{
execcount = sqlhelper.ExecuteMySqlNonQuery(sqlstr, System.Data.CommandType.Text);
}
catch (Exception)
{
execcount = -1;
}

        if (execcount < 0)
        {
            loginobj = null;
        }
                     else
        {
            //这里由于没有创建数据库,所以暂时用假数据.
            loginobj = new LoginParam();
            loginobj.TaskID = "123450";
            loginobj.AcceptLanguage = "1";
            loginobj.LoginUrl = "http://www.baidu.com"; ;
            loginobj.UserName = "张三";
            loginobj.PassWord = "954471364";
        }
        return loginobj;
    }
}

4个回答

caozhy
caozhy   Ds   Rxr 2014.12.18 17:06

你怎么会想起来在客户端调用这个类呢?wcf不能远程调用那些无法通过序列化传输的对象,而且你的整个思路都错了。

你应该在服务器端就把业务逻辑做好,客户端调用服务器上的业务,而不是通过服务器直接操作数据库。

zhaoshiwu
zhaoshiwu   2014.12.18 16:00

public class TestSer : ITestSer
{
...
public LoginParam GetLoginObj()
{
LoginParam loginobj = null;
MySQLHelper sqlhelper = MySQLHelper.CreatInstance();//自定义类用于连接数据库
string sqlstr = "select * from c_task";
int execcount = 0;
try
{
execcount = sqlhelper.ExecuteMySqlNonQuery(sqlstr, System.Data.CommandType.Text);
}
catch (Exception)
{
execcount = -1;
}

        if (execcount < 0)
        {
            loginobj = null;
        }
                     else
        {
            //这里由于没有创建数据库,所以暂时用假数据.
            loginobj = new LoginParam();
            loginobj.TaskID = "123450";
            loginobj.AcceptLanguage = "1";
            loginobj.LoginUrl = "http://www.baidu.com"; ;
            loginobj.UserName = "张三";
            loginobj.PassWord = "954471364";
        }
        return loginobj;
    }

}


zhaoshiwu
zhaoshiwu   2014.12.18 16:02

这是里面的创建实例的方法

 public static MySQLHelper CreatInstance()
        {
            if (_instance == null)
            {
                lock (_lockobj)
                {
                    if (_instance == null)
                    {
                        try
                        {
                            _instance = new MySQLHelper();
                        }
                        catch (Exception ex)
                        {
                            string meg = ex.Message.ToString();
                        }
                    }
                }
            }
            return _instance;
        }
feiyun0112
feiyun0112   Rxr 2014.12.18 16:08

具体哪句报错?什么错?

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
常见的Android中的单利模式的写法
http://cantellow.iteye.com/blog/838473
Java单例模式——并非看起来那么简单
Java中单例(Singleton)模式是一种广泛使用的设计模式。单例模式的主要作用是保证在Java程序中,某个类只有一个实例存在。一些管理器和控制器常被设计成单例模式。单例模式有很多好处,它能够避免实例对象的重复创建,不仅可以减少每次创建对象的时间开销,还可以节约内存空间;能够避免由于操作多个实例导致的逻辑错误。如果一个对象有可能贯穿整个应用程序,而且整个对象起到了统一管理控制的
Android的单例模式的N种实现方式
说起Androidd的23种设计模式,恐怕大多数人不能说全,但是说起单例模式,大多数人不管是初级开发还是资深开发工程师都应该知道并且使用过。单例模式应该是最简单也是比较常用的设计模式了。但是你真的了解单例模式吗?最近看了《Android源码设计模式》这本书,才发现我原来理解的单例模式太冰山一角了。今天就书中谈到的单例模式做一下总结吧。 单例模式的定义及使用场景 定义:确保某个类只有一个实例,而
WCF处理异常
WCF异常处理 000011 初识WCF异常 000011.1 在WCF中异常机制特点:     a.当一个客户端调用WCF服务产生异常后,只会导致当前调用结束,它并不影响其它客户端对该WCF的调用,WCF仍然可以为其它客户端继续服务。     b.WCF产生的异常对象是CLR中的对象类型,而WCF客户端却不一定是.NET,可能是Java或PHP等。所以WCF服务不能向客户端返回CLR异常
JavaScript设计模式----单例模式
声明:这个系列为阅读《JavaScript设计模式与开发实践》 —-曾探@著一书的读书笔记1.单例模式的特点和定义 保证一个类仅有一个实例,并且提供一个访问它的全局访问点。 2.传统面向对象语言的单例模式2.1传统语言描述的单例模式JavaScript实现var Singleton = function(name) { this.name = name; this.instanc
Android开发设计模式之——单例模式
单例模式是设计模式中最常见也最简单的一种设计模式,保证了在程序中只有一个实例存在并且能全局的访问到。比如在android实际APP 开发中用到的 账号信息对象管理, 数据库对象(SQLiteOpenHelper)等都会用到单例模式。下面针对一些例子分析一下我们在开发过程中应用单例模式需要注意的点。 一、作用 单例模式(Singleton):保证一个类仅有一个实例,并提供一个访问它的全局访问
最安全的单例模式--java使用内部类实现单例模式
实现类 public class Singleton {     private static class LazyHolder {            private static final Singleton INSTANCE = new Singleton();          }          private Singleton (){}          publi
单例模式中采用的延迟加载创建单例(内部类)
此篇文章为看别人的文章自己小小记录的一点日常知识。 在创建单例模式的时候,如果单纯的只考虑单例而不思考那样做的话会产生什么问题这样是不严谨的,比如会发生线程安全问题,看了一些文章其中一篇写得非常详细有关单例模式的问题和性能比较,这篇文章http://blog.sina.com.cn/s/blog_62c7c3030100zwkp.html(谢谢大神)。其中在文章中提出JVM的无序写也会使得单例模
AS3实现单例模式举例
在面向对象的编程中,有时候会要求一个类有且仅存在一个实例,并提供一个全局的访问方法。所以我们在设计这样的类的时候,就需要思考如何避开构造函数,提供 一种机制来实现单例(单一实例)。这就是单例模式。另因为在AS3中无法操作线程,因此我们无需考虑多线程情况下的单例。 单例模式的几种AS3实现 在AS3中有多种方法可以实现Singleton模式。 方法1: package { pub
Swift3 单例模式
常见的有这么几种方法 第一种简单到爆的 final class Single: NSObject { static let shared = Single() private override init() {} } final关键字的作用是这个类或方法不希望被继承和重写 第二种 public extension DispatchQueue { private s