0

The operation 'PRPA_IN201301UV02' could not be loaded because it has a parameter or return type of type System.ServiceModel.Channels.Message or a type that has MessageContractAttribute and other parameters of different types. When using System.ServiceModel.Channels.Message or types with MessageContractAttribute, the method must not use any other types of parameters.

コンソール ホストで WCF を実行しています。これがコントラクトです。

[MessageContract]
public class opRequest
{
    [MessageBodyMember]
    public string myProperty;
}

[ServiceContract(Namespace = "urn:hl7-org:v3")]
public interface IHL7v3
{
    [OperationContract(Name = "PRPA_IN201301UV02", Action = "urn:hl7-org:v3:PRPA_IN201301UV02")]
    string PIXManager_PRPA_IN201301UV02(opRequest clientID);
}

opRequest クラスから and を削除すると実行され[MessageContract]ます[MessageBodyMember]

それが私が必要とするものに到達するかどうかは完全にわからないので、より広い範囲を与えます - パラメータ名の囲みタグなしで SOAP 本体を取得しようとしています。たとえば、(SOAP メッセージから抽出された本文) の代わりに:

<s:Body>
<PRPA_IN201301UV02 xmlns="urn:hl7-org:v3">
  <clientID>the xml document is enclosed</clientID>
</PRPA_IN201301UV02>

私はそれが次のようになりたい:

<s:Body>
<PRPA_IN201301UV02 xmlns="urn:hl7-org:v3">
  my given xml document will go here...
</PRPA_IN201301UV02>

標準 (HL7v3 PIX Manager SOAP Web サービス) に準拠するには、そのようにする必要があります。

何か案は?

4

2 に答える 2

1

戻りパラメータにも MessageContract を使用する必要があるようです

編集: 詳細については、この MSDN の記事を参照してくださいメッセージ コントラクトの使用 メッセージを使用してコントラクト を設計する場合、他の型をパラメーターまたは戻り値として使用することはできません。

記事のコード スニペットを次に示します。

[OperationContract]
bool Validate(BankingTransaction bt);
// Invalid, the return type is not a message contract.
[OperationContract]
void Reconcile(BankingTransaction bt1, BankingTransaction bt2);
// Invalid, there is more than one parameter.
于 2013-01-17T13:36:29.303 に答える
0

XMLDocument入力パラメータとして の代わりにを使用しようとしましたopRequestか? また、XML シリアライザーを使用するには、インターフェイスをマークする必要があります。

[ServiceContract(Namespace = "urn:hl7-org:v3")]
[XmlSerializerFormat]
public interface IHL7v3
{
    [OperationContract(Name = "PRPA_IN201301UV02", Action = "urn:hl7-org:v3:PRPA_IN201301UV02")]
    XMLDocument PIXManager_PRPA_IN201301UV02(XMLDocument doc);
}

XMLも返していると思います。

これは広く公開されていることに注意してください。明示的なデータ コントラクトがないため、意図しない XML が送信される可能性があります。

于 2013-01-17T13:49:28.830 に答える