解析值时遇到意外字符:。路径 ,第 0 行,位置 0。



这个机会我要感谢所有对这个问题有答案的人,我正在尝试从我的 web api 服务中获取一个 json,但我不能这是我在 web api 上的代码......

[ResponseType(typeof(List<CompanyType>))]
    [Route("GetList")]
    [DeflateCompression]
    public async Task<IHttpActionResult> Get()
    {
        List<CompanyType> companyTypes = (List<CompanyType>)MemoryCacheManager.GetValue(@"CompanyTypes");
        if (companyTypes != null) return Ok(companyTypes);
        companyTypes = await _CompanyType.Queryable().ToListAsync();
        if (companyTypes == null) return Ok(HttpStatusCode.NoContent);
        MemoryCacheManager.Add(@"CompanyTypes", companyTypes);
        return Ok(companyTypes);
    }

在我的客户网站上,我得到了这个

public async Task<T> GetAsync<T>(string action, string authToken = null)
    {
        using (var client = new HttpClient())
        {
            if (!authToken.IsNullOrWhiteSpace())
                client.DefaultRequestHeaders.Authorization = AuthenticationHeaderValue.Parse(@"Bearer " + authToken);
            var result = await client.GetAsync(BuildActionUri(action));
            string json = await result.Content.ReadAsStringAsync();
            if (result.IsSuccessStatusCode)
                return JsonConvert.DeserializeObject<T>(json); //This line fails because the characters in the value
            throw new ApiException(result.StatusCode, json);
        }
    }

正如你所看到的,这里没有什么奇怪的,它是一个简单的代码,它试图将 json 值解析为泛型类,但这失败了,因为当我调用我的 webapi URL 时,它给了我这个值

json = VR LQ R2T Q 2 u B*u000bR "E e ) @q ̔TƑB% ʝ Z>#>#> ̊B J r2 q

我不知道为什么我的 webapi 给我这个值,当我尝试调试我的服务时,它给了我这个值

<ArrayOfCompanyType xmlns:i="http://www.w3.org/2001/XMLSchema-instance" ><CompanyType z:Id="i1" xmlns:z="http://schemas.microsoft.com/2003/10/Serialization/"><Id>1</Id><Type>Privada</Type><JobProviders i:nil="true" /></CompanyType><CompanyType z:Id="i2" xmlns:z="http://schemas.microsoft.com/2003/10/Serialization/"><Id>2</Id><Type>Mixta</Type><JobProviders i:nil="true" /></CompanyType><CompanyType z:Id="i3" xmlns:z="http://schemas.microsoft.com/2003/10/Serialization/"><Id>3</Id><Type>Publica</Type><JobProviders i:nil="true" /></CompanyType></ArrayOfCompanyType>

如您所见,一切看起来都很好,但是当我尝试解析以从客户端获取此值时,问题就开始了。

这是我的课

[DataContract(IsReference = true, Name = @"CompanyType", )]
public class CompanyType : Entity
{
    [DataMember(Order = 0)]
    public int Id { get; set; }

    [DataMember(Order = 1)]
    public string Type { get; set; }

    [DataMember(Order = 2)]
    public virtual List<JobProvider> JobProviders { get; set; }
}

我在没有的情况下尝试了它 de 数据合同 仍然出现相同的错误。

此致敬意!。

好吧,我想通了,我正在尝试使用此示例 http://blog.developers.ba/asp-net-web-api-gzip-compression-actionfilter/但问题是序列化程序未注册,所以在我的启动项目中我做了这个

GlobalConfiguration.Configuration.Formatters.Add(new ProtoBufFormatter());

我更改了我的操作,删除了属性 [放气压缩]

[ResponseType(typeof(List<CompanyType>))]
[Route("GetList")]
//[DeflateCompression]
public async Task<IHttpActionResult> Get()
{
    Logic goes here....
}

它现在正在工作,但现在我有另一个问题,当我尝试调用我的 webapi 操作时,我必须响应 IHttpActionResult 有一个例外

没有为类型定义序列化程序:系统对象

相关内容

  • 没有找到相关文章

最新更新