【问题标题】:Unexpected character encountered while parsing value: �. Path '', line 0, position 0.解析值时遇到意外字符:�。路径 '',第 0 行,第 0 位置。
【发布时间】:2015-05-12 18:51:21
【问题描述】:

这个机会我要感谢所有对此问题有答案的人,我正在尝试从我的 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 = ��VR�LQ�R2T�Q�2u�B*R�"E�e�)�@q�������̔Ԣ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 DataContracts 的情况下尝试了它,但仍然是同样的错误。

最好的问候!。

【问题讨论】:

标签: asp.net asp.net-mvc web-services asp.net-web-api json.net


【解决方案1】:

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

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

我更改了删除属性 [DeflateCompression] 的操作

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

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

没有为类型定义序列化程序:System.Object

【讨论】:

    猜你喜欢
    • 2018-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-31
    • 1970-01-01
    • 2016-11-13
    相关资源
    最近更新 更多