2

ブラウザからサービス操作を使用すると、完全に機能します。

.net クライアントからサービス操作を使用すると、エラーが発生します

「型 'System.Linq.IQueryable`1[MyEntity]' には設定可能なプロパティがありません。」

何か案が?ありがとう。

クライアントコード:

public IQueryable<MyEntity> CallMyOperation(string param1 = "", string param2 = "") {
        DataServiceQuery<IQueryable<MyEntity>> q =
            CreateQuery<IQueryable<MyEntity>>("MyOperation")
                .AddQueryOption("param1", "'" + param1 + "'")
                .AddQueryOption("param2", "'" + param2 + "'");
        return
            Execute<IQueryable<MyEntity>>(
                new Uri(q.RequestUri.ToString().Replace("MyOperation()", "MyOperation"))).
                FirstOrDefault();
    }

Wcf サービス コード:

        [WebGet]
    public IQueryable<MyEntity> MyOperation(string param1 = "", string param2 = "") {
     ...
    }

    public static void InitializeService(DataServiceConfiguration config) {
        config.DataServiceBehavior.MaxProtocolVersion =
            DataServiceProtocolVersion.V3;
        config.UseVerboseErrors = true;
        config.SetEntitySetAccessRule("MyEntity", EntitySetRights.AllRead);
        config.SetServiceOperationAccessRule("MyOperation", ServiceOperationRights.AllRead);
    }
4

1 に答える 1

2

への呼び出しにExecute<T>は、IQueryable<T>. 実体化プロセスが実行されると、 で受け取ったエンティティからオブジェクトにプロパティを設定しようとしますWebResponseIQueryable<T>ワイヤに戻っているプロパティがないため、具体化は失敗します。

それでも が必要な場合はIQueryable、 を呼び出すことができますExecute<MyEntity>(...).AsQueryable()

于 2012-08-23T16:13:45.493 に答える