0

クライアントでjQueryを使用してCRUD操作を実行できる、完全に機能するwcfサービスがあります。この小さなサービス アプリケーションを移植できるようにしたいので、アプリや web.config の設定 (特定のアドレス エンドポイントなど) を避けようとしています。サービス アプリケーションを小さな dll ファイルにコンパイルし、さまざまな Web アドレスでホストされているいくつかの異なるプロジェクトで試しました。すべて正常に動作します。

フォーム認証を使用しているため、web.config ファイルに入力した唯一の設定は aspNetCompatibilityEnabled 用でした。サービス コントラクトの名前または名前空間を定義しておらず、app.config ファイルが接続文字列なしで空です。.svc ファイルのアドレスを入力すると、「エンドポイントが見つかりません」というエラーが表示されます。ただし、操作コントラクトで定義した UriTemplates を使用すると、サービスは完全に機能します。これの影響は何ですか?

.svc ファイルで自分のデータ オブジェクトやメソッドを公開することは気にしません。このサービスが移植可能であり、予期しないエラーが原因で爆発しないようにする必要があります。

慎重に楽観的。

更新 さらに調査した結果、上記の例は WCF の既定の動作であることがわかりました。ここでそれを説明するMSからの良い記事があります。

4

1 に答える 1

1

ポータブルとはどういう意味かわかりません。サービスはdllにあり、任意のWebアプリケーションで使用できます。次に、.NETFrameworkのバージョンによって異なります。

.NET 3.5では、.svcファイルでサービスをホストし、構成ファイルまたはコードでサービス(サービス、エンドポイント、動作、AspNetCompatibility)を構成する必要があります。

.NET 4.0では、他の提供された情報に基づいてエンドポイントを作成できる単純化された構成モデルを利用できます。構成ベースのアクティベーションまたはサービスルートによって、.svcファイルでサービスをホストできます。すべての場合において、WebServiceHostFactoryを使用して、WebHttpBindingを使用してエンドポイントを自動的に作成できるようにすることが重要です。AspNetCompatibilityを構成するだけで済みます。webHttpの動作をさらに指定する必要がある場合は、動作の名前を指定せずに構成に配置することもできます。このような動作は、すべてのサービスのデフォルトとして使用されます(.NET 3.5では不可能です)。

どちらの場合も、ベースアドレスは常にホスティングWebアプリケーションから取得されるため、ベースアドレスを構成する必要はありません。

于 2010-10-09T08:15:15.790 に答える