簡體   English   中英

Servicestack SendAll 正在工作但發送錯誤

[英]Servicestack SendAll is working but sending an error

我正在發送一個 CSV 並對其進行反序列化。

 List<CompanyService> responseX;
            using (var reader = new StreamReader(files[0].InputStream))
            {
                // convert stream to string
                string text = reader.ReadToEnd();
                List<InsertCompany> deserializeFromString = ServiceStack.Text.CsvSerializer.DeserializeFromString<List<InsertCompany>>(text);
                responseX = Gateway.SendAll<CompanyService>(deserializeFromString);
            }


 /// <summary>
        /// To insert the company
        /// </summary>
        /// <returns></returns>
        public long Post(InsertCompany request)
        {
            var company = request.ConvertTo<Company>();
            company.AuditId = UserAuth.Id;
            var result = Db.Insert<Company>(company, selectIdentity: true);

            //History
            CreateCompanyHistory(result, "INSERT", UserAuth.Id);

            //See the SQL that was generated
            //var lastSql = Db.GetLastSql();
            return result;
        }

當我調用 Sendall 時,它調用 CompanyService 並處理所有列表,然后發回錯誤。 但是記錄會保存在數據庫中。 錯誤= System.Runtime.Serialization.SerializationException: 'Type definitions should start with a '{', expecting serialized type 'CompanyService', got string starting with: 71'

附帶說明一下,我找不到 ServiceStack.Text.CsvSerializer.DeserializeFromString 的任何文檔

編輯 -

我的 CSV 清晰

CompanyName,ParentCompanyId,City,Country,Email,Phone,Address1,Address2,Latitude,Longitude
Sub Company 8A,8,,,a@c.n,,dfg,,0,0
Sub Company 8B,8,,,W@RF.COM,7777,f,,0,0
Sub Company 8C,8,,,a@c.com,7777,d,,0,0
Sub Company 8D,8,,,abc@gmail.com,7777,2,,0,0
Sub Company 8E,8,,,abc@gmail.com,7777,2,,0,0
Sub Company 8F,8,,,abc@gmail.com,7777,2,,0,0

- 編輯 2

這些是我使用 ST 編寫的第一個 API。 我忘記修改它們以使用正確的返回類型。 這是我一直在使用的,切換到它解決了錯誤。

public class ResponseList : IResponseItemList
{
    public List<dynamic> Result { get; set; }
}

public interface IResponseItemList
{
    List<dynamic> Result { get; set; }
}

public class Response : IResponseItem
{
    public dynamic Result { get; set; }
}

public interface IResponseItem
{
    dynamic Result { get; set; }
}

該錯誤表明 CSV 不是CsvSerializer期望的格式,例如,當您嘗試在 CSV 中反序列化 JSON 時,您會收到此錯誤。

CsvSerializer.Deserialize* API 應該反序列化的唯一文本是最初使用CsvSerializer序列化的 CSV。 它應該能夠反序列化簡單的通用 CSV 文件,但是一旦您擁有任何復雜的類型(CSV 不支持),它就會期望由CsvSerializer生成的自以為是的輸出。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM