DataServiceContext.ExecuteAsync导致有关User-Agent标头的异常

时间:2019-03-29 20:05:27

标签: xamarin.forms odata odata-connected-service

我已经创建了Xamarin.Forms应用程序,并添加了连接的Odata服务。 现在,当我尝试向后端发送请求时,它将失败,并出现异常System.ArgumentException:必须使用适当的属性或方法来修改“ User-Agent”标头。 参数名称:名称。

我尝试过的事情:

1:处理DataServiceContext_BuildingRequest并在其中使用e.Headers [“ User-Agent”] =“ xyz”;

2:设置Content-Type标头,因为我在另一个有帮助的地方读了它(e.Headers.Add(“ Content-Type”,“ application / json”))

3:设置DataServiceContext.Configurations.RequestPipeline.OnMessageCreating的委托。问题是,一旦我尝试创建一个新的HttpWebRequestMessage实例并传入它接收到的args,就会抛出异常。

管道代表:

Configurations.RequestPipeline.OnMessageCreating = (args) =>
{
    args.Headers["User-Agent"] = "xyz";                
    args.Headers.Add("Content-Type", "application/json");
    args.Headers["Accept"] = "application/json";
    var req = new HttpWebRequestMessage(args);
    req.HttpWebRequest.ContentType = "application/json";
    return req;
};

对此我的怀疑是,Odata HttpWebRequestMessage类使用的基础代码中发生了某些更改,该代码不再允许直接设置User-Agent标头。

有人找到解决这个问题的方法吗?

0 个答案:

没有答案