読者です 読者をやめる 読者になる 読者になる

misc.log

日常茶飯事とお仕事と

ASP.NET Webサービスを配置する

業務日誌 業務日誌.NET ASP.NET

Webサービス(Web Service)と言えば、Visual Studio.NET 2003の頃にちょっとだけかじった程度なのですが、今度Visual Studio 2008を使った環境で作成する必要が出てきたので基本的な部分を調べています。作るのはなんとかなるのですが、実際にWebサーバーに配置するときの手順や準備がよくわからなかったので…。

IIS側の設定

IIS側では、

  • アプリケーション、もしくはサイトの追加。
  • アプリケーションプールの.NET CLRをv2.0にする(.NET Framework 3.5の場合)。
  • 物理フォルダのセキュリティ設定に以下の許可設定を行う。
    • ユーザー「IUSR」に読み取り実行権限を付与。
    • アプリケーションプール名と同じ名前のユーザーに読み取り実行権限を付与。

上記の権限設定については以下のサイトで説明してもらってました。

Webアプリケーションを作るための手帖/IIS 7 のアクセス許可
http://awoni.net/tips/iis_acl/

この設定を行わないと、アクセス権が無いというエラーが出てWebサービスを利用できません。
今回、お試しで作ったサービスは、IISのデフォルトルートにエイリアス「WebServiceTest」を用意し、同名のアプリケーションプールをCLR v2.0に設定。asmxファイルは「SampleWebService.asmx」という名称にしました。

「型 "WebServiceTest.…を作成できませんでした」エラーが出る

セキュリティ設定から権限の設定を行っても、上記のエラーが発生しました。内容は

パーサー エラー 
 説明: この要求の処理に必要なリソースの解析中にエラーが発生しました。以下の解析エラーの
詳細を確認し、ソースファイルに変更を加えてください。 

パーサー エラー メッセージ: 型 'WebServiceTest.SampleWebService' を作成できませんでした。

ソース エラー: 

行 1:  <%@ WebService Language="C#" CodeBehind="SampleWebService.asmx.cs" Class="WebServiceTest.IPTWebService" %>
 
ソース ファイル:  /WebServiceTest/SampleWebService.asmx    行:  1 

結論を先に言うと……binフォルダの中身を置いていませんでした。このところ、ASP.NETWCFのサービスを中心に作業していたので、「DLLを配置する」というのをすっかり忘れてました(テヘッ)。

Webサービスのデプロイで必要なものが何かは、Visual Studioが自動的に判断して抽出してくれます。ソリューションエクスプローラーからプロジェクトを右クリック、「発行」を選択し、実際のWebサーバーの物理フォルダを指定すると、そこにビルド済みのDLLと、*.asmxファイル、web.configファイルを配置してくれました。そう、要するに「*.asmx.cs」は要らないのです。

下記URLはVisual Stuldio.NET 2003のものですが、具体的な配置物はきっちりと書いてありました。この辺については.NET Frameworkが上がっても変わらなかったのですね。

Visual Studio における ASP.NET Web サービス プロジェクト
http://msdn.microsoft.com/ja-jp/library/aa983561(v=vs.71).aspx

実際にWebサービスにアクセスする

ここまでで書いた内容で作成したWebサービスは「http://(host名):(port)/WebServiceTest/SampleWebService.asmx」というアドレスをブラウザから直接指定すればアクセスできます。

VB.NETC#Webサービス参照するアプリを作ってもいいですが、とりあえず「動くよね」という確認であればこれで十分だと思います。


ほかの手

おそらくですが、WCFを使ってもSOAPでのやりとりを行うWebサービスは作れそうです。余裕があれば調べてみます。

この辺にそれぞれの違いについて対比が書かれています。

開発者の視点から見たASP.NET WebサービスWCFとの比較
http://msdn.microsoft.com/ja-jp/library/aa738737(v=vs.110).aspx

インサイドWindows Communication Foundation (マイクロソフト公式解説書 Microsoft Visual Studio 2008)

インサイドWindows Communication Foundation (マイクロソフト公式解説書 Microsoft Visual Studio 2008)