javascriptから呼び出す必要があるwcfサービスを作成する必要があります。DataContractResolverをAJAX対応のwcfサービスで使用する
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]
public class ClientRequestService : IClientRequestService
{
[WebGet]
[ApplyProxyDataContractResolver]
public ResponseData ProcessClientRequest(String pageId)
{
...
}
}
このメソッドは、そのタイプIは、コンパイル時に知っていないオブジェクトを返す必要があります。次のようにサービスが定義されています。だから、呼び出されたときに次の例外が発生します。
タイプ...データ契約名...は必要ありません。 DataContractResolverの使用を検討するか、KnownTypeAttribute属性を使用するか、DataContractSerializerに渡される既知の型のリストに追加するなど、既知の型のリストに静的に知られていない型を追加することを検討してください。
カスタムDataContractResolverを作成し、カスタムDataContractResolverをサービスに追加するために、インターフェイスIOperationBehaviorを実装する属性を作成します。
public class ApplyProxyDataContractResolverAttribute : Attribute, IOperationBehavior
{
public void ApplyDispatchBehavior(OperationDescription description, DispatchOperation dispatch)
{
var dataContractSerializerOperationBehavior =
description.Behaviors.Find<DataContractSerializerOperationBehavior>();
dataContractSerializerOperationBehavior.DataContractResolver = new ProxyDataContractResolver();
}
}
ApplyDispatchBehaviorが正常に呼び出されますが、私のカスタムDataContractResolverのメソッドが呼び出されることはありませんと私は同じ例外を取得する方法
。ServiceRouteクラスを使用するか、svcファイルを使用してサービスを登録しようとしましたが、それは動作しません。
この解決方法を知ったのはどのドキュメントですか? – kroonwijk
私は同じ問題を抱えています。誰でも答えがありますか? – kelloti