2

私は現在プロジェクトに取り組んでおり、WCFWebサービスについて学習しようとしています。

WCFサービスをホストするコンソールアプリケーションがあります。<baseAddress>App.configファイルのセクションにアクセスできるURLを追加しました。Visual Studioでコンソールアプリケーションをデバッグモードで実行すると、「。」というポップアップが表示されますyour services have been hosted

Visual Studioの外部でアプリを実行し、接続できないURLにアクセスすると、アプリを機能させるためにいくつかの構成を行う必要があると思いますが、必要なものが見つかりません。

2つの質問があります。コンソールアプリ内でホストされているWCFサービスをhttp://からIIS for Windowsを使用してアクセスできるようにする方法と、ApacheWebサーバーでMonoC#を使用して利用できるようにする方法です。

あなたが提供できるどんな助けにも感謝します。

4

2 に答える 2

2

IISでのホスティング-テスト用

IISでサービスをホストするには、仮想ディレクトリを作成する必要があります。これを行うには2つの方法があります。

簡単にテストするには:

  • Visual StudioでWCFサービスプロジェクトを右クリックし、[プロパティ]/[Web]を選択します
  • そこで「ローカルIISWebサーバーを使用する」を選択します。
  • 「IISExpressを使用する」を有効にしないでください。
  • プロジェクトURLは、サーバーがWeb上に表示されるアドレスです。http://yourhost/somepath/
  • [仮想ディレクトリの作成]をクリックします(このために管理者としてVisual Studioを実行する必要がある場合がありますが、この手順は1回だけ必要であり、日常的に使用するための管理者権限は必要ありません)。

その後、仮想ディレクトリが設定され、IISはすべての要求をhttp://yourhost/somepathWCFサービスに転送します。これは、プロジェクトディレクトリ内のVisual Studioによって生成されたバイナリを指すため、再構築によって自動的に処理されることに注意してください。

これは、開発とテストのための最も簡単なオプションです。VisualStudioを開く必要はありませんが、行った変更はすべて、デプロイされたインスタンスに自動的に反映されます。

IISでのホスティング-本番用

本番環境では、実際の仮想ディレクトリを作成する必要があります。それを行うには:

  • サービスをホストするディレクトリ(たとえば、 `C:\ inetpub \ yoursite \ yourservice \')を作成します。これは、ファイルシステム上の任意のディレクトリにすることができます。
  • Webサービスをこのディレクトリにコピーします(Visual Studioにはこれを自動化する方法がありますが、私はこれを使用したことがないので、それがどのように機能するかはよくわかりません)。
  • 「インターネットインフォメーションサービス(IIS)マネージャー」を開きます(管理者として実行する必要があります)
  • 左側のペインに、構成済みのIISインスタンスとサイトが表示されます。これを初めて実行し、左側のペインが空の場合(デフォルトのサイトがあるはずです)、右クリックして[Webサイトの追加]を選択します。
  • Webサイトを右クリックし、[仮想ディレクトリの追加]を選択します。エイリアスは新しいディレクトリの表示名です。たとえばhttp://yoursite/alias/、物理パスは、サービスを展開したディレクトリを指しているだけです。

セルフホスティング

コンソールアプリはセルフホスティングと呼ばれます。これがVisualStudioの外部で機能しない場合は、通常、に問題がありますapp.configここに簡単な例があります。

モノでのホスティング

Monoの場合、次の3つのオプションがあります。

  1. セルフホスティング
  2. 本番用のmod-monoを使用したApache
  3. テストに現在のディレクトリを使用するmod-monoを使用したApache

セルフホスティングとは、いくつかのことを実行する単純なコンソールアプリケーションを作成することを意味します

var host = new System.ServiceModel.ServiceHost(typeof(MyService));
host.Open();
Console.WriteLine("Service running");
foreach (var se in host.Description.Endpoints)
    Console.WriteLine(se.Address);
Console.ReadLine();
host.Close();

コマンドラインでMonoを使用して実行します。

一部のサンプルを含め、mod-monoを使用してApacheをセットアップする方法については、mod-monoを使用してApacheでホストされているWCFサービスにアクセスできないを参照してください。

ここには2つのオプションがあります。Apacheによって取得されたディレクトリにサービスをコピーするか、mod-mono-server手動で開始して任意のディレクトリ(たとえば、テスト用の現在のディレクトリ)を指定することもできます。

于 2012-11-26T19:17:24.267 に答える
0

IISでコンソールアプリケーションをホストすることはできません。IISでWCFサービス(Wabアプリケーションでは.svcファイル)を作成する必要があります。IISが実行され、サービスがホストされます。サービスをホストしているIISの場合、URLはiis内の.svcファイルのパスです(Webサイトなど)。また、basicHttpBindingを使用している場合は、ASMXベースのWebサービスを使用するすべてのプラットフォームから利用できる必要があります。

于 2012-11-26T16:09:55.297 に答える