0

パラメータが指定されていない場合にデフォルトのデータを返すルート UriTemplate があります。

[WebGet(UriTemplate = "")]

そして、そのアプローチがいくつかの例で使用されているのを見てきました。

ただし、単純なパス変数を受け入れる別のテンプレートを追加しました。

[WebGet(UriTemplate = "{code}")]

次に、コードでデフォルトのリストをフィルタリングします。

たとえば、http://localhost/items (基本 ServiceRoute として) はアイテムのデフォルト リストを表示し、http://localhost/items/ABCはアイテム 'ABC' を表示します。

問題は、http://localhost/items/helpが自動生成されたヘルプ ページではなく 404 エラーを表示するようになったことです。これは、'code' パラメーターの値として 'help' が認識されるためです (そして操作は "一致するレコードがない場合は「見つかりません」ステータス)。

その UriTemplate を保持し、ヘルプ ページを失わないようにする方法についてのアイデアはありますか?

4

2 に答える 2

0

.svcアドレスを追加してみてください。

したがって、次のようにする代わりに:

http://localhost/items/help

好きですか

http://localhost/items.svc/help

ここからのコメントにあります: MSDN Rest Help

于 2012-07-26T17:10:16.997 に答える
0

ヘルプ ページが機能しなくなった理由は、アンダーhelpEnabledとして定義されたプロパティが、構成を有効にする wcf 'soap' メタデータに何らかの形で置き換えられたためです。standardEndpointwebHttpEndpoint

したがって、REST .Net 4.0 でヘルプ ページを有効にするための正しい web.config セクションは、十分に文書化されているように、次のとおりです。

<system.serviceModel>
 <standardEndpoints>
  <webHttpEndpoint>
    <standardEndpoint name="" helpEnabled="true" automaticFormatSelectionEnabled="true"/>
  </webHttpEndpoint>
</standardEndpoints>

Microsoft/Tony Sneed テンプレートを使用して REST プロジェクトを作成し、これを適切に構成しましたが、Web アプリケーションに OData サービスも追加したと思います。それが理由であるかどうかにかかわらず、上記の構成は次のものに置き換えられました。

<behaviors>
  <serviceBehaviors>
    <behavior>
      <serviceMetadata httpGetEnabled="true" />
      <serviceDebug includeExceptionDetailInFaults="true" />
    </behavior>
  </serviceBehaviors>
</behaviors>

ここで、午前 1 時に 'help page wcf rest' を十分に見つめてグーグルで検索すると、これはもちろん wcf 'soap-style' サービスに対して wsdl 'help' が有効になっている方法であり、一致する構文が表示され、help がREST に対して正しく有効になっているため、UriTemplates の問題を非難します。

于 2012-07-26T23:10:04.637 に答える