WindowsServiceにホストされているWebAPI

6802 ワード

手順:
1、WindowsServiceプロジェクトを作成する.
2、Manage NuGet Packagesをクリックし、Microsoft Aspを検索する.NET Web API Self Host、Installをクリックします.
3、サービスを編集する.csファイルは次のとおりです.
 1 public partial class Service1 : ServiceBase

 2     {

 3         private HttpSelfHostServer _server;

 4         private readonly HttpSelfHostConfiguration _config;

 5         public const string ServiceAddress = "http://localhost:1345";

 6         public Service1()

 7         {

 8             InitializeComponent();

 9 

10             _config = new HttpSelfHostConfiguration(ServiceAddress);

11             _config.Routes.MapHttpRoute("DefaultApi",

12                 "api/{controller}/{id}",

13                 new { id = RouteParameter.Optional });

14         }

15 

16         protected override void OnStart(string[] args)

17         {

18             _server = new HttpSelfHostServer(_config);

19             _server.OpenAsync();

20         }

21 

22         protected override void OnStop()

23         {

24             _server.CloseAsync().Wait();

25             _server.Dispose();

26         }

27     }

28     public class ApiServiceController : ApiController

29     {

30         [HttpGet]

31         public string Get()

32         {

33             return "Hello from windows service!";

34         }

35     }

4、サービス1を開く.csのビューデザイナ、ビューデザイナの任意の位置を右クリックし、「インストーラの追加」を選択すると、プロジェクトと目的の下に「インストーラ」のグループが表示されます(最初に「インストーラ」のグループを追加した場合は、ProjectInstaller.csをダブルクリックしてProjectInstallerのビューデザイナーを開き、serviceInstaller 1コンポーネントを見つけ、選択した後F 4キーを押してコンポーネントのプロパティを設定し、Description=「テストサーバー?」DisplayName=“Service1”  ServiceName=“Service1”;//この値はWindowsServices 1とする必要があります.InitService()メソッドで設定するbase.ServiceNameプロパティは、StartTypeがサービス実行タイプで、必要に応じて設定できます.(Manual:手動起動、AutoMaticは自動起動)、ceProcessInstaller 1コンポーネントを見つけ、選択してF 4キーを押してコンポーネント属性を設定し、Account="LocalSystem";//他のプロパティに設定すると、サービスが開始されると、ユーザー名とパスワードの入力を求められます.これにより、インストールとテストが完了します.
5、生成ディレクトリを開き、生成に成功するとWindowsServices 1がある.exeファイルは、生成ディレクトリのルートディレクトリの下にbat(バッチファイル)を2つ追加し、インストールとアンインストールに使用し、テキストファイルを新規作成し、ファイルを開いて次の2行のコマンドC:WindowsMicrosoftを追加します.NET\Framework\v4.0.30319\InstallUtil.exe WindowsService1.exe pauseは保存するテキストファイルを閉じ、その後「インストール服.bat」ファイルと名前を変更します.接尾辞名を変更することに注意してください.bat!,新しいテキストファイルを作成し、ファイルを開いて次の2行のコマンドCを追加します:WindowsMicrosoft.NET\Framework\v4.0.30319\InstallUtil.exe/u WindowsService1.exe pauseは保存するテキストファイルを閉じ、その後「アンインストールbat」ファイルと名前を変更します.接尾辞名を変更することに注意してください.bat! 6.4「インストール服.bat」ファイル、windowsサービスをインストールします.サービスInstaller 1を設定したばかりなので、インストールに成功したら手動でサービスを開始する必要があります.StartType=Manualはwindowsサービスマネージャを開き、Service 1というサービスを見つけます.右ボタンのプロパティです.をクリックして起動します.
 
6.コンパイル時のインストールアンインストール:
build events:Pre-build enent command line
net stop xxx exit/b 0
post-build event command line:
%systemroot%\Microsoft.NET\Framework\v4.0.30319\installutil.exe/u $(TargetPath)%systemroot%\Microsoft.NET\Framework\v4.0.30319\installutil.exe $(TargetPath)