- やりたいこと
- (1) 準備
- (2.1) ASP.NETのプロジェクト作成
- (2.2) Webサービス(asmx)の作成
- (2.3) WebMethodの追加
- (2.4) インストーラ作成の前に
- (2.5) インストーラ(WebSetup)の作成
- (2.6) Webサービスのデプロイ
- 【参考】
やりたいこと
ASP.NETでかんたんなWebサービスを作成して、デスクトップアプリからアクセスしてみる。
(Visual Studioと「.NETデスクトップ開発」はインストール済みとする。)
(1) 準備
Visual Studio Installer で、「ASP.NETとWeb開発」をインストールする。
また、Visual Studio の「拡張機能」→「拡張機能の管理」で「Microsoft Vosual Studio Installer Projects」をインストールしておく。
また、今回はローカルホストをWebサーバとして動作確認するので、ローカルにIISをインストールしておく。
(2.1) ASP.NETのプロジェクト作成
Visual Studio で、新しいプロジェクトの作成で「ASP.NET Webアプリケーション」を選択。
テンプレートは「空」を選択。
適当な名前でプロジェクトを作成する。今回は WebAppHoge という名前にした。
(2.2) Webサービス(asmx)の作成
「プロジェクト」→「新しい項目の追加」で「Webサービス(ASMX)を選択」し、適当な名前を付けて追加。今回はWebServiceHoge.asmxという名前にした。
すると、WebServiceHoge.asmx.cs というソースが生成される。ここには HelloWorld() というサンプルの WebMethod が実装されている。
[WebMethod] public string HelloWorld() { return "Hello World"; }
既定ではWebサービスの名前空間(Namespace) が http://tempuri.org/ になっているので、一意の名前空間に変更する。名前空間はURLの形式にするが、必ずしも実際のURLと一致している必要はない。また、ドメイン名の後にディレクトリがあると403エラーになることがある。
[WebService(Namespace = "http://WebAppHoge.lipoyang.net/")]
プロジェクトを実行 (F5) すると、ブラウザ上で動作確認できる。(見れば分かるので解説は省略)
(2.3) WebMethodの追加
引数をとるWebMethodを追加してみる。
[WebMethod] public string ToUpper(string input) { return input.ToUpper(); }
プロジェクトを実行 (F5) すると、ブラウザ上で動作確認できる。(見れば分かるので解説は省略)
(2.4) インストーラ作成の前に
「ツール」→「NuGet パッケージマネージャー」→「パッケージ マネージャー コンソール」で下記のコマンドを実行しておく。
Uninstall-package Microsoft.CodeDom.Providers.DotNetCompilerPlatform
これにより、\bin\roslyn ディレクトリが生成されなくなる。そうしておかないと後述の手順でIISにWebサービスをデプロイしてブラウザからアクセスしたときに「'~~~/csc.exe' の一部が見つかりませんでした。」といったエラーが出る。詳細は下記の記事を参照。
(2.5) インストーラ(WebSetup)の作成
サービスのデプロイにはVisual Studioの「発行」の機能を利用することが多いが、ここではインストーラを作成することにする。
ソリューションに「追加」→「新しいプロジェクト」で、「Web Setup Project」を選択。プロジェクト名は WebSetup としておく。
WebSetupプロジェクトに「Add」→「プロジェクト出力」で、WebAppHoge の「プライマリ出力」と「コンテンツファイル」を追加する。
また、WebSetupプロジェクトのプロパティで、「ProductName」と「Title」の既定値が WebSetup になっているので、WebAppHoge に変更する。
また、仮想ディレクトリ名も既定値が WebSetup になっているが、これの変更方法は少しややこしい。まず、WebSetupプロジェクトを選択し、「表示」→「Editor」→「ファイルシステム」で File System (WebSetup) を開き、「Web Application Folder」のプロパティの「VirtualDirectory」を WebSetup から WebAppHoge に変更する。
プロジェクトをビルドすると、WebSetup.msi および setup.exe ができる。
(2.6) Webサービスのデプロイ
作成したインストーラを実行するとWebサーバ(IIS)にWebサービスをデプロイできる。今回はローカルのIISにWebサービスをデプロイする。
ブラウザでWebサービスのURLにアクセスして動作を確認する。
http://localhost/WebAppHoge/WebServiceHoge.asmx