AT-*_*017 2 c# asp.net web-services windows-services
我使用了一个简单的Windows服务来使方法在特定时间工作,它工作正常.之后我已经尝试过:
protected override void OnStart(string[] args)
{
this.WriteToFile("Simple Service started {0}");
this.ScheduleService();
}
protected override void OnStop()
{
this.WriteToFile("Simple Service stopped {0}");
this.Schedular.Dispose();
}
private Timer Schedular;
public void ScheduleService()
{
try
{
Schedular = new Timer(new TimerCallback(SchedularCallback));
string mode = ConfigurationManager.AppSettings["Mode"].ToUpper();
this.WriteToFile("Simple Service Mode: " + mode + " {0}");
//Rest of the code here
}
catch(Exception ex)
{
WriteToFile("Simple Service Error on: {0} " + ex.Message + ex.StackTrace);
//Stop the Windows Service.
using (System.ServiceProcess.ServiceController serviceController = new System.ServiceProcess.ServiceController("SimpleService"))
{
serviceController.Stop();
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是在一个简单的Windows应用程序中完成的.所以我要做的是在Windows服务中调用Web服务(在特定时间运行的特定方法).我正在构建的应用程序是基于Web的,我有点困惑如何将Windows服务集成到其中?我是否需要任何替代方案或任何建议将不胜感激.
注意:我想知道的是,是否需要在Web应用程序中为Windows服务创建另一个项目或以其他任何方式实现?
要从Windows服务应用程序调用Web服务,首先要从该Web服务生成DLL,然后实例化其命名空间.假设您拥有该Web服务的代码和/或知道其命名空间,您可以执行以下命令来执行此操作:
在命令行上执行以下行:您的Web服务的URL
cd C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\bin\NETFX 4.5.1 Tools
wsdl /l:CS /protocol:SOAP %svc%?WSDL
在哪里%svc%,即http://localhost:777/MyWebService.asmx
如果代码是在VB而不是C#中,请更改/l:CS为/l:VB.这将输出可以转换为DLL的代理类文件.
将MyWebService.cs文件移动C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\bin\NETFX 4.5.1 Tools到C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\目录.
在命令行上运行以下两个命令:
cd C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727
csc /t:library %name%.cs /reference:System.Web.Services.dll /optimize
哪个%name%是类的名称(没有.cs,因为命令将附加此类).在我们的例子中,我们使用MyWebService.(对于VB类,将.cs更改为.vb.)
导航到C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727Windows资源管理器.您应该看到在该文件夹中创建的DLL,其名称为class(MyWebService.dll).将此文件复制到binService项目的文件夹中.您需要设置bin要包含在项目中的文件夹,然后右键单击该文件夹以添加>现有项目.选择DLL.导入后,选择DLL并将其属性更改为:
构建操作:内容
复制到输出目录:如果较新则复制(或根据需要复制)
右键单击" 引用">"添加引用".导航到binWeb服务文件夹中的DLL .
右键单击" 引用">"添加服务引用".假设您的Web服务正在运行,请获取其完整的URL(即http://localhost:777/MyWebService.asmx)并将其放在地址行上.在Namespace文本框中,给它一些比它更有意义的东西ServiceReference1,但它不应该与MyWebService(ASMX文件的名称/命名空间)相同.也许吧MWS.
在Windows服务中实例化您的Web服务:
MWS.MyWebServiceSoapClient webService = new MWS.MyWebServiceSoapClient();
webService.Open();
string someDataYouWant = webService.SomeMethodToGetData();
webService.Close();
或者你可以这样做:
MyWebService webService = new MyWebService();
string someDataYouWant = webService.SomeMethodToGetData();
webService.Dispose();
| 归档时间: |
|
| 查看次数: |
6768 次 |
| 最近记录: |