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。我忘记修改它们以使用正确的 return 类型。这是我一直在使用并切换到它解决了错误。
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
.
生成的自以为是的输出
我正在发送 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。我忘记修改它们以使用正确的 return 类型。这是我一直在使用并切换到它解决了错误。
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
.