c# - Servicestack SendAll 正在工作,但发送错误
问题描述
我正在发送 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 不支持)时,它期望由CsvSerializer
.
推荐阅读
- .net - .NET 4.7.2 如何管理在 .NET Standard 2.0 中编译的依赖项的重定向?
- json - 在 Power BI 中获取 JSON 形状映射视觉对象的映射键表
- javascript - 注册前 Lambda 触发器 autoConfirmUser 不起作用
- nginx - “nginx:[emerg] “events”指令在 /etc/nginx/sites-enabled/myapp.conf:1 中是不允许的” nginX 中的错误
- python - 使用带有 errors='replace' 的 str.decode 仍然会出现错误
- mongodb - MongoDB findOneAndUpdate():使用部分输入进行更新
- gulp - 如何让 gulp.series 运行两个单独运行时成功运行的任务?
- c++ - 从命令行获取参数的问题
- regex - 如何将 Google 表格上正则表达式计算字段的结果与数据透视表相加?
- excel - 尝试在目录中搜索所有 txt 文件的内容以查找字符串,并在找到时将文件路径发布到单元格中