0

いくつかのタイプの要求 (PUT/DELETE/POST/JSON/POX/SOAP) に対応する WCF Web サービスを作成しました。これを行うために、リクエスト タイプを定義する属性を使用して、リクエスト フレーバーごとに個別の操作を作成しました。したがって、「WordInfo()」という名前の操作がある場合、「WordInfo_POST」、「WordInfo_GETXML()」、「WordInfo_GETJSON()」などになります。

問題は、ユーザーがクライアント アプリケーションで WSDL を使用するときに、これらの追加メソッドをユーザーに表示したくないということです。言い換えれば、私はそれらをインテリセンスに表示させたくありません。これが私が話していることの例です:

[ServiceContract]
interface IWVLibrary
{
    [OperationContract]
    [WebGet(UriTemplate = "WordInfo/{Data}/{ApiKey}?format=xml", ResponseFormat = WebMessageFormat.Xml)]
    [return: MessageParameter(Name = "WordInfo")]
    WordInfoResult WordInfo_GETXML(string data, string ApiKey);

    [OperationContract]
    [WebGet(UriTemplate = "WordInfo/{Data}/{ApiKey}?format=json", ResponseFormat = WebMessageFormat.Json)]
    [return: MessageParameter(Name = "WordInfo")]
    WordInfoResult WordInfo_GETJSON(string Data, string ApiKey);

    [OperationContract]
    [WebInvoke(Method = "POST", UriTemplate = "", BodyStyle = WebMessageBodyStyle.Wrapped, RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
    [return: MessageParameter(Name = "WordInfo")]
    WordInfoResult WordInfo_POST(string Data, string ApiKey);

    [OperationContract]
    [WebInvoke(Method = "PUT", UriTemplate = "", BodyStyle = WebMessageBodyStyle.Wrapped, RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
    [return: MessageParameter(Name = "WordInfo")]
    WordInfoResult WordInfo_PUT(string Name, string ApiKey);

    [OperationContract]
    [WebInvoke(Method = "DELETE", UriTemplate = "WordInfo/{Data}/{ApiKey}", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json)]
    [return: MessageParameter(Name = "WordInfo")]
    WordInfoResult WordInfo_DELETE(string Data, string ApiKey);

    [OperationContract]
    [WebInvoke(BodyStyle = WebMessageBodyStyle.Wrapped)]
    WordInfoResult WordInfo(string Data, string ApiKey);
}

しかし、この例では、「WordInfo()」だけを公開したいと思います。

操作をプライベートにしようとしましたが、コンパイルされないか、リクエストのタイプを受け入れなくなります。

ありがとう!

4

2 に答える 2

0

私はあなたがWebAPIを使うべきだと思います、それはあなたのニーズに合っています。

于 2012-06-28T16:12:49.133 に答える
0

REST サービス用の WSDL はありません。

あなたは何を達成したいですか?とにかく、WSDL がないため、ユーザーにはメソッドが表示されません。

はい、RESTサービスには「ヘルプ」ページが存在します。標準のヘルプページを無効にして、独自のヘルプページを作成し、公開したいメソッドのみを記述できます。

または、クライアントにいくつかのメソッドを消費させたくない場合は、それを公開せず、それらの WebGet、WebInvoke 属性を削除してください。

于 2012-07-01T07:33:01.333 に答える