2011-04-28 119 views
0

我正在使用ASP.net webform应用程序运行现有的控制台应用程序,该应用程序从数据库获取所有记录并通过第三方WCF服务发送它们。本地一切工作正常。当我运行应用程序时,它会打开控制台,获取记录并发送它们。但现在我把文件和exe文件以及相关的配置文件一起推送到测试服务器。但是,当我通过浏览器访问应用程序(测试网址)时,我一次又一次收到相同的错误消息,而我没有看到控制台窗口。有时候一切正常,但从未连续两次。从webform调用控制台应用程序(WCF服务)的问题

的错误信息是:

"There was no end point listening at '.....svc' that could accept message. This is often caused by incorrect address or soap action. 

System.net.webexception. Remote name could not be resolved 
at System.Net.HttpWebRequest.GetRequestStream 
at System.ServiceModel.Channels.HttpOutput.Webrequest.HttpOutput.GetOutputStream() 

我已经在网络表单用于调用控制台应用程序中的代码是:

ProcessStartInfo p = new ProcessStartInfo(); 
p.Arguments = _updateNow.ToString(); 
p.FileName="something"; 
p.UseShellExecute = false;// tried true too without luck 
Process.Start(p); 

错误消息表示“没有结束点”和听起来像WCF服务存在问题,但是如果我在Test中双击可执行文件,则没有问题。可能是什么问题或者是否应该将控制台应用程序功能重做到我的主Webform应用程序?

更新:增加的Process.Start(P)之后的Thread.Sleep(3000)之后,我有没有问题。因此,似乎主应用程序并未等待批处理过程完成。如何解决这个问题呢?

+0

你需要做的标题更具描述性 – Simon 2011-04-28 01:47:29

+0

您也可以澄清过程中承载WCF服务和被调用WCF服务的问题? – Justin 2011-04-28 03:02:07

+0

控制台应用程序正在调用外部wcf服务。我从asp.net应用程序调用控制台应用程序。 – Learner 2011-04-28 03:07:02

回答

0

好像有启动控制台应用程序和WCF Web服务变得初始化和可用的使用之间的一个短暂的延迟 - 这是可以预期的。

你既可以:解决这个问题

  • 工作中使用Thread.Sleep(),并可能与一对夫妇渔获 - 重试块。
  • 当准备好接收请求时(例如,通过写入标准输出并使用重定向流),您可以将控制台应用程序报告给创建进程。

但是在这一点上,我可能会稍微重新考虑这个架构 - 开始一个新进程相对昂贵,除此之外,初始化WCF serice也是相对昂贵的。如果这是每个请求执行一次,那么以及上述时间问题也会导致性能处罚。

是没可能改变architecutre稍微让一个外部进程(例如Windows服务)用于所有请求,而不是产卵,每次一个新的进程?

相关问题