在windows服务里调用wcf服务

david_88888 2015-04-09 05:12:47
在windows服务里调试时wcf服务可以运行并且能获取到数据,但是在启动服务时就报错,以下是代码及截图:
 public Service1()
{
InitializeComponent();
}

protected override void OnStart(string[] args)
{
//服务开始执行代码
StartDoSomething();
}

//public void OnStart()
//{
// //服务开始执行代码
// StartDoSomething();

//}

protected override void OnStop()
{
//服务结束执行代码

}

protected override void OnPause()
{
//服务暂停执行代码
base.OnPause();
}

protected override void OnContinue()
{
//服务恢复执行代码
base.OnContinue();
}

protected override void OnShutdown()
{
//系统既将关闭执行代码
base.OnShutdown();
}

private void StartDoSomething()
{
//System.Timers.Timer timer = new System.Timers.Timer(10000); //间隔10秒
//timer.AutoReset = true;
//timer.Enabled = false; //执行一次
////timer.Elapsed += new ElapsedEventHandler(WriteSomething);
//timer.Elapsed += new System.Timers.ElapsedEventHandler(WriteSomething);
//timer.Start();

WriteSomething(); //WriteSomething(object source, System.Timers.ElapsedEventArgs e)
}

private void WriteSomething()
{
//wcf服务
AccessServiceClient myClient = new AccessServiceClient(); //SvcUtil.exe生成的客户端代理类
FileStream fs = null;
try
{
string ss = myClient.QueryMachineDq("");
fs = new FileStream("e:/DoorExpiryDateMail.txt", FileMode.OpenOrCreate);
string strText = ss;
//获得字节数组
byte[] data = new UTF8Encoding().GetBytes(strText);
//开始写入
fs.Write(data, 0, data.Length);
//清空缓冲区、关闭流
fs.Flush();
fs.Close();
fs.Dispose();
}
catch(Exception ex)
{

}
finally
{
if (fs != null)
{
fs.Close();
fs.Dispose();
}
//myConn.Close();
//myConn.Dispose();
//myClient.Abort();
}
}



启动这个windows服务时就报这样的错,这是啥状况??
...全文
168 点赞 收藏 5
写回复
5 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
没配置的话,就是你没在app.config中添加wcf的client节点配置
回复
WCF的宿主服务没启动吧?
回复
david_88888 2015-04-10
引用 1 楼 feiyun0112 的回复:
到事件查看器看下日志
搞定了,估计是windows服务正式运行的时候只是执行了一个可执行文件,没有找到配置文件,所以报错,后来我将wcf绑定和终节点写到代码里就可以了,以下是代码:
System.ServiceModel.WSHttpBinding myBinding = new WSHttpBinding();
            myBinding.MaxReceivedMessageSize = 655360000;
            myBinding.ReaderQuotas.MaxStringContentLength = 810920000;
            System.ServiceModel.EndpointAddress myAddress = new EndpointAddress("http://192.168.5.253:8732/AccessControlwcfserver/AccessService/");
            AccessServiceClient myClient = new AccessServiceClient(myBinding,myAddress);   //SvcUtil.exe生成的客户端代理类
回复
david_88888 2015-04-09
异常信息: "在 ServiceModel 客户端配置部分中,找不到引用协定“IAccessService”的默认终结点元素。这可能是因为未找到应用程序的配置文件,或者是因为客户端元素中找不到与此协定匹配的终结点元素。"这个是报的异常,可能是没有找到配置文件,但是在windows服务里调试时就没问题的,为什么正式运行的时候找不到配置文件呢?如果是缺少,那这个配置文件要放哪
回复
feiyun0112 2015-04-09
到事件查看器看下日志
回复
相关推荐
发帖
.NET技术前瞻
创建于2007-09-28

1.3w+

社区成员

.NET技术 .NET技术前瞻
申请成为版主
帖子事件
创建了帖子
2015-04-09 05:12
社区公告
暂无公告