0

2 つの異なる SystemFaults を生成するインターフェイスを実装する必要があります

Interface:
[ServiceContract]
public interface IErrorProvider
{
[OperationContract(Action = "getError")]
[FaultContractAttribute(typeof(string), Action = "getError", Name = "Error1Fault")]
[FaultContractAttribute(typeof(string), Action = "getError", Name = "Error2Fault")]
string getError(int iArg);
}

そして実装:

Code:
public class ErrorProvider : IErrorProvider
{
  public getError(int iArg)
  {
    if(iArg == 1)
      throw new FaultException<string>("Error1Fault","you asked err 1");
    if(iArg == 2)
      throw new FaultException<string>("Error2Fault","you asked err 2");
    return "No error";
  }
}

このサービスを呼び出すと、

<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/">
  <Body>
    <getError xmlns="http://tempuri.org/">
        <iArg>1</iArg>
    </getError>
  </Body>
</Envelope>

私は応答を受け取ります:

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
  <s:Body>
    <s:Fault>
        <faultcode>s:Client</faultcode>
        <faultstring xml:lang="fi-FI">you asked err 1</faultstring>
        <detail>
            <Error2Fault xmlns="http://tempuri.org/">Error1Fault</Error2Fault>
        </detail>
    </s:Fault>
  </s:Body>
</s:Envelope>

初投が使われていることがよくわかります。私が得る必要があるのは:

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
  <s:Body>
    <s:Fault>
        <faultcode>s:Client</faultcode>
        <faultstring xml:lang="fi-FI">you asked err 1</faultstring>
        <detail>
            <Error1Fault xmlns="http://tempuri.org/">Error1Fault</Error1Fault>
        </detail>
    </s:Fault>
  </s:Body>
</s:Envelope> 

それを取得する方法は?そして、相手を変える機会がないので、どうにかしてこの、本当に初心者の質問を解決する必要がありますが、本当の解決策を見つけることができません。すべてのドキュメントは、自作のオブジェクトをスローするように指示していますが、これらは単なるエラー文字列であるため、それがどのように役立つか理解できません。

4

0 に答える 0