4

IIS でホストされているサービスに新しいエンドポイントを追加しようとしてきましたが、この 1 日ほどそれを理解できませんでした。

これは私の理解です:

  • 固有のアドレスを持つ限り、IIS の下に複数のエンドポイントを持つことができます。
  • ベース アドレスを割り当てることはできますが、IIS の仮想ディレクトリのセットアップによって上書きされます。

私の仮想ディレクトリはhttp://localhost/WcfCert/ です

<services>
  <service name="WcfCertServer.Service1" behaviorConfiguration="WcfCertServer.Service1Behavior">
    <endpoint address="" binding="wsHttpBinding" contract="WcfCertServer.IService1"/>
    <endpoint address="test" binding="wsHttpBinding" contract="WcfCertServer.IService1"/>
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
  </service>
</services>

http://localhost/wcfcert/service1.svcを使用してサービスを立ち上げることができます

しかしhttp://localhost/wcfcert/test/service1.svc/testは IE またはクライアント アプリで何も返しません

ここで何が欠けていますか?

編集:

それで私はさらにテストを行いました、そしてここに私が発見したものがあります.

WcfTestClient.exe を起動してhttp://localhost:1523/Service1.svcまたはhttp://localhost:1523/Service1.svc/mexを追加すると、そのアドレスの下に両方のエンドポイントが追加されます。ここに私の質問があります http://localhost:1523/Service1.svcは最初のエンドポイントだけを表すべきではありませんか? そのアドレスを追加すると、両方のエンドポイントが表示されるのはなぜですか?

しかし、 http://localhost:1523/Service1.svc/testを追加しようとすると、

エラー: http://localhost:1523/Service1.svc/testからメタデータを取得できませんこれがアクセス権を持つ Windows (R) Communication Foundation サービスである場合は、指定されたアドレスでのメタデータ公開が有効になっていることを確認してください。メタデータの公開を有効にする方法については、MSDN のドキュメント ( http://go.microsoft.com/fwlink/?LinkId=65455.WS-Metadata Exchange Error URI: http://localhost:1523/Service1.svc/test ) を参照してください。 メタデータに解決できない参照が含まれています: ' http://localhost:1523/Service1.svc/test '。 Sendera:BadContextTokenメッセージを処理できませんでした。これは、' http://schemas.xmlsoap.org/ws/2004/09/transfer/Getアクションが原因である可能性が最も高いです。' が正しくないか、メッセージに無効または期限切れのセキュリティ コンテキスト トークンが含まれているか、バインディング間に不一致があるためです。非アクティブのためにサービスがチャネルを中止した場合、セキュリティ コンテキスト トークンは無効になります。サービスがアイドル セッションを中止しないようにするには、サービス エンドポイントのバインディングで受信タイムアウトを早めに増やします。HTTP GET エラー URI: http : // localhost:1523/Service1.svc/test /Service1.svc/test '. リクエストは HTTP ステータス 400: Bad Request で失敗しました。

4

2 に答える 2

2

実際には次のようになります。

http://localhost/wcfcert/service1.svc/test

URL を「http://localhost/wcfcert/test/service1.svc」にしたい場合は、アドレス属性に完全な URL を指定する必要があります。

于 2009-07-25T18:44:53.513 に答える