1

fiddlerでテストしたServiceStackRESTサービス(PUTおよびPOST)があり、エラーが発生しない場合は戻ります

new HttpResult(HttpStatusCode.OK); 

現在、同じRESTサービスをサービススタッククライアントでテストしています。次のようになります。

var client = new XmlServiceClient("url"));
client.Post<ChangeServerLicenseDto>("", new ChangeServerLicenseDto()
         {ServerName = model.ServerName});

そして、RESTサービスで例外が発生します

    return new HttpResult(HttpStatusCode.OK)

発生したエラーは次のとおりです。

      500 (Error in line 1 position 76. Expecting element 'ChangeServerLicense'
      from namespace ''.. Encountered 'Element'  with name 'HttpStatusCode',
      namespace 'http://schemas.datacontract.org/2004/07/System.Net'.) 

私のクライアントコードはMVCアクションメソッド(POST)にあります。

RestServiceの私のデータ契約は次のとおりです。

[DataContract(Name = "ChangeServerLicense", Namespace = "")]
[RestService("url", "POST", "application/xml")]
public class ChangeServerLicenseDto
{
    [DataMember(Name = "ServerName", Order = 1)]
    public string ServerName { get; set; }
}
4

1 に答える 1

1

成功した応答を通知する規則は、空の応答DTOを返すことです(デフォルトでは200 OKを返します)。またSend<TResponse>(...)、POSTを実行するため、リクエストにURLを含めたくない場合は、Sendこれを使用して、リクエストを自動事前定義ルートにPOSTします。

var client = new XmlServiceClient("url"));
client.Send<ChangeServerLicenseDtoResponse>(
    new ChangeServerLicenseDto {ServerName = model.ServerName});

それ以外の場合でも使用する場合.Post<T>(...)は、サービスがマウントされているカスタムルートのURLを含めます。

注:私は通常Dto、サービスで最も重要なAPIであるDTOにサフィックスを使用することを嫌います-理由をもう少し詳しく説明します

于 2012-06-04T15:29:03.380 に答える