当前位置: 代码迷 >> ASP.NET >> 【帖】Windows服务调用外部dll错误
  详细解决方案

【帖】Windows服务调用外部dll错误

热度:8184   发布时间:2013-02-25 00:00:00.0
【求助帖】Windows服务调用外部dll异常
C# code
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Diagnostics;using System.Linq;using System.ServiceProcess;using System.Text;using System.IO;namespace WSForXMLReport{    public partial class ServiceXML : ServiceBase    {        System.Timers.Timer timer = null;        public ServiceXML()        {            InitializeComponent();        }        protected override void OnStart(string[] args)        {            timer = new System.Timers.Timer();            timer.Elapsed += new System.Timers.ElapsedEventHandler(timer_Elapsed);            timer.Interval = 1000 * 5;  //5s            timer.AutoReset = true;            timer.Enabled = true;            timer.Start();        }        protected override void OnStop()        {            timer.Enabled = false;            //页面中使用:System.Web.HttpContext.Current.Server.MapPath            string strPath = AppDomain.CurrentDomain.BaseDirectory;            string path = strPath + @"/ErrStop.txt";            //文件不存在就创建然后读写该文件,会提示文件被占用。            if (!File.Exists(path))            {                FileStream fs = File.Create(path);//若文件不存在就先创建                 fs.Close();            }            StreamWriter sw = new StreamWriter(path, true);            sw.WriteLine(DateTime.Now + ":stop ok");            sw.Flush();            sw.Close();        }        private void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)        {            this.timer.Enabled = false;            #region 定时执行程序            //在这里编写需要定时执行的逻辑代码            //FFWS.BLL.earlyWarningInfo eBll = new FFWS.BLL.earlyWarningInfo();            //List<FFWS.Model.earlyWarningInfo> lst = eBll.GetStcdRealDataReport();            string str = "abc";            //FFWS.Web.WebReference.IReportReceiveService service = new FFWS.Web.WebReference.IReportReceiveService();            //Global文件只能使用下面的方法查找目录,可能是应用程序还未启动。            //页面中使用:System.Web.HttpContext.Current.Server.MapPath            string strPath = AppDomain.CurrentDomain.BaseDirectory;            string path = strPath + @"/Err.txt";            //文件不存在就创建然后读写该文件,会提示文件被占用。            if (!File.Exists(path))            {                FileStream fs = File.Create(path);//若文件不存在就先创建                 fs.Close();            }            StreamWriter sw = new StreamWriter(path, true);            sw.WriteLine(DateTime.Now + " " + str + ": start");            sw.Flush();            sw.Close();            #endregion            this.timer.Enabled = true;        }    }}


//首先windows服务这个项目也添加了相关的引用
但是只要调用类似://FFWS.BLL.earlyWarningInfo eBll = new FFWS.BLL.earlyWarningInfo();
下面的代码都不执行,注释掉了,运行就正常,vs2008/vs2010都试了一样的结果,

是什么原因导致的?!

------解决方案--------------------------------------------------------
你写一个console程序能调用这个dll并执行所有业务功能吗?
------解决方案--------------------------------------------------------
看看earlyWarningInfo类有没有引用其它第三方的控件,如COM组件
------解决方案--------------------------------------------------------
但是只要调用类似://FFWS.BLL.earlyWarningInfo eBll = new FFWS.BLL.earlyWarningInfo();

说明这里面的代码有问题啊。你得贴出这里的代码,或者自己加调试信息调试吧
------解决方案--------------------------------------------------------
提示:***的类型初始值设定项引发异常。

这很明显是你的代码问题了,不同的运行环境下,有些东西的获取方法是不同的,或者权限问题
  相关解决方案