问题描述
错误:编写JSON响应时,必须指定用户模型,并且必须将实体集和实体类型传递给ODataMessageWriter.CreateODataResourceWriter方法,或者必须在ODataResource上设置ODataResourceSerializationInfo或正在写入的ODataResourceSet
当从PowerQuery调用返回实体集合的绑定函数时,会发生这种情况。从网络浏览器调用时,响应为(JSON格式):
{
"@odata.context": "https://tag-
master.adnm.net:9648/Tag2017Controlled/ODataV4/$Metadata#Collection(NAV.MeterReadingQuery)","value": [
{
"No": "PO100001","Description": "",},}
我用于GET调用的函数(在request.FindEntriesAsync()时发生错误):
public async Task<IEnumerable<T>> GetAllAsync<T>()
{
IBoundClient<IDictionary<string,object>> oDataRequest =
_oDataService.Client(_logger).For("Company")
.Key(companyName).Navigateto(_serviceName);
IEnumerable<IDictionary<string,object>> response = await oDataRequest.FindEntriesAsync();
IEnumerable<T> parsedResponse = _oDataResponseParser.Parse<T>(response);
return parsedResponse;
}
OdataService返回的OData客户端:
public IODataClient Client(ILogger logger = null)
{
if (logger == null)
{
logger = _logger;
}
NetworkCredential oDataCredentials = new NetworkCredential
{
UserName = _basicCredentials.Username,Password = _basicCredentials.Password
};
return
new ODataClient(
new ODataClientSettings(
new HttpClient(
new RetryHandler(
new httpclienthandler() {
Credentials = oDataCredentials,PreAuthenticate = true
},_logger
)
)
{
BaseAddress = _uri
},null,null
)
{
OnTrace = (x,y) => _logger.Loginformation(string.Format(x,y)),PreferredUpdateMethod = ODataUpdateMethod.Patch,PayloadFormat = ODataPayloadFormat.Json,IgnoreUnmappedProperties = true,IncludeAnnotationsInResults = true
}
);
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)