1

标题有点误导,这是我的情况:使用邮递员,我可以调用以下 url 发布帖子,我的函数可以工作:

http://localhost/odataservice/odata/Evaluations(9)/CreateEmptyForm

为了让它工作,我必须在正文部分发送以下内容:

    {
        "@odata.type": "#Common.Data.Client",
        "ClientId": 1
    }

当我尝试在我的 asp.net mvc 应用程序中复制它时,我的问题就出现了。在那里,我在做

    public int CreateRvaForm(int clientId, int evalId, int type)
    {
        var key = Task.Run(async () =>
        {
            var data = await
                client
                    .For<Evaluation>(Constants.DataService.PLURAL_EVALUATIONS)
                    .Key(evalId)
                    .Function( type==0 ? Constants.DataService.FUNCTION_CREATE_RVA_EMPTY : Constants.DataService.FUNCTION_CREATE_RVA_DUPLICATE)
                    .Set( new{ClientId=clientId} )
                    .ExecuteAsScalarAsync<int>();
            return data;

        }).GetAwaiter().GetResult();
        return key;
    }

这里,变量 client 是 Simple.Odata.Client 对象。

我得到的错误与找不到路线有关;调试向我显示该库正在尝试执行 url

http://localhost/odataservice/odata/Evaluations(9)/CreateEmptyForm(clientId=XX)。我无权修改 odata 服务。

4

1 回答 1

1

根据此文本(“执行函数和操作”),您应该尝试使用Action而不是Function因为操作是基于 POST 的调用,而函数转换为 HTTP GET

于 2018-03-26T11:12:46.037 回答