[英]How can I automate / schedule a WCF service call hosted in IIS?
对于管理自己的数据导入的服务,我有一个非常简单的服务合同,类似于:
using System.ServiceModel;
namespace Company.Services.Domain.Contract
{
[ServiceContract(Name = "ImportService", Namespace = "http://services.company.org/")]
public interface IImportService
{
[OperationContract]
ImportResponse ImportData();
}
}
我想设置一个计划任务或类似的东西,每天执行此调用。 我知道我可以编写一个控制台应用程序并通过svcutil创建一个代理。 但有没有办法在IIS本地配置它(可能是IIS扩展)? 或者我可以用PowerShell实现简单而优雅的东西吗?
只是想知道我的选择是什么。
您可以使用cURL(Windows和'nix版本可用): http : //curl.haxx.se/
将计划任务设置为使用适合的参数调用curl.exe以向Web服务的URL发出请求:
curl -o importResponse.txt http://services.company.org/ImportService.svc/ImportData
-o将响应放入给定名称的文本文件中。 其他配置选项可在手册中找到: http : //curl.haxx.se/docs/manual.html
编辑:这假设您正在公开Web服务和GET(而不是POST或SOAP)。 如果您正在公开SOAP服务,它应该仍然相当简单,因为您没有传递任何参数。
curl --request POST --header 'Content-type: text/xml' --output importResponse.txt --data <SOAP/> http://services.company.org/ImportService.svc/ImportData
或者,当您使用WCF时,您可以同时将服务公开为SOAP服务和RESTful Web服务,方法是在应用程序的web.config中添加一些配置:webHttpBinding,服务端点和endpointBehavior,如下所示: http://weblogs.asp.net/kiyoshi/archive/2008/10/08/wcf-using-webhttpbinding-for-rest-services.aspx
检查ou New-WebServiceProxy。 它非常有用,你将它指向网址并加载网络服务。 您可以将它传递给Get-Member以查看可用的内容。
马特
编辑:示例现在我不在我的手机上:-)
# url for the service
$url = "http://services.company.org/ImportService"
# Create the service - using default credentials
$service = New-WebServiceProxy $Url -UseDefaultCredentials
# explore the service
$service | gm
有关更多信息,请查看PowerShell帮助
help New-WebServiceProxy
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.