我收到以下错误,我不知道在哪里修复它。 代码编译并运行,但我得到500回来,这意味着服务器代码中出现了问题。我在调试时发现了这个...想法?
错误CS1503:参数1:无法从'System.Net.Http.HttpContent'转换为'System.Collections.Generic.IEnumerable'
强文
public async void ExportData()
{
//code to request data from the server
requestUri = ipaddress:port/api/data/export?dataFileId={Id};
var response = await Client.GetAsync(requestUri);
}
控制器
[HttpGet]
[Route("export")]
public HttpResponseMessage Export
var fileContents = _dataService.ExportDataFiles(dataFileId);
var fileLines = string.Empty;
// fileContents.Lines.Aggregate(fileLines, (s, s1) => s+=s1 + Environment.NewLine);
using (var multipartContent = new MultipartContent())
{
foreach (var fileContent in fileContents)
{
foreach (var fileLine in fileContent.Lines)
{
fileLines += fileLine + Environment.NewLine;
}
var fileStream = new MemoryStream(Encoding.UTF8.GetBytes(fileLines));
var streamContent = new StreamContent(fileStream);
streamContent.Headers.ContentType =
System.Net.Http.Headers.MediaTypeHeaderValue.Parse(
"multipart/related; boundary=cbsms-main-boundary");
streamContent.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
{
FileName = fileContent.Name
};
streamContent.Headers.ContentType = new MediaTypeHeaderValue("application/data");
multipartContent.Add(streamContent);
}
var response = Request.CreateResponse(HttpStatusCode.OK);
response.Content = multipartContent;
return response;
}
答案 0 :(得分:0)
我无法找到关于如何最好地发送项目或如何处理冲突的好答案,所以我决定使用WebApi 2 IHttpActionResult。这是一个很好的用例和成功! 我抽象了HttResponseMessage的创建,并将Json中的整个数据集发送到客户端。我用Postman和Fiddler对此进行了验证,然后能够在没有直接解析的情况下突破Json,但是使用了cast。 看看这个!
减少控制器上代码中的行数
[HttpGet]
[Route("export")]
public IHttpActionResult ExportActionResult(Guid dataFileSetId)
{
var fileContents = _dataService.ExportParameterFiles(dataFileSetId);
return Ok(fileContents);
}
来自客户:
public async void ExportData()
{
//code to request data from the server
requestUri = ipaddress:port/api/data/export?dataFileId={Id};
var response = await Client.GetAsync(requestUri);
var result = responseTask;
if(result.IsSuccessStatusCode)
{
var readTask =
result.Content.ReadAsAsync<IEnumerable<DataFlatFileDto>>();
readTask.Wait();
}
现在读取任务包含我从服务器发送的文件,并将它们转换为DataFileDto,因此设置了名称和数据部分,并且数据已准备好在客户端中使用!
本文是阐述如何使用IHttpActionResult的关键: http://www.tutorialsteacher.com/webapi/consuming-web-api-in-dotnet-using-httpclient