C# 如何使用ServiceStack返回大型文本文件?
我有一个web服务,它需要为客户端上的AJAX调用返回一个大文本文件。首先,我有一个文本文件的有效路径:C# 如何使用ServiceStack返回大型文本文件?,c#,asp.net,
servicestack,C#,Asp.net,
servicestack,我有一个web服务,它需要为客户端上的AJAX调用返回一个大文本文件。首先,我有一个文本文件的有效路径: var fileName = <file on server> 但这不起作用;响应是一个简单的JSON对象。使用FileInfo和asAttachment选项也不起作用;它只是返回了一堆文件信息 JavaScript客户端的目标是能够以字符串形式接收内容: api.getFile({...}).then( function (result) { // result ha
var fileName = <file on server>
但这不起作用;响应是一个简单的JSON对象。使用FileInfo
和asAttachment
选项也不起作用;它只是返回了一堆文件信息
JavaScript客户端的目标是能够以字符串形式接收内容:
api.getFile({...}).then( function (result) {
// result has the file contents
});
正确的方法是什么
更新:
我最终使用了这种流方法来让它工作:
using( var fs = File.OpenRead( fileName ) )
{
fs.CopyTo( Response.OutputStream );
}
我不完全理解为什么其他一些方法不起作用,但它们似乎与1)FileInfo及其在服务器上的行为、2)我的开发环境中的文件权限以及3)“部分内容”问题和异常有关。讨论了让我感到厌烦的一个问题。我刚刚了解了HttpResult API的预期工作:
[Route("/textfile-test")]
public class TextFileTest
{
public bool AsAttachment { get; set; }
}
public class MyServices : Service
{
public object Any(TextFileTest request)
{
return new HttpResult(new FileInfo("~/textfile.txt".MapHostAbsolutePath()),
asAttachment:request.AsAttachment);
}
}
您可以使用或不使用asAttachment
选项对其进行测试:
[Route("/textfile-test")]
public class TextFileTest
{
public bool AsAttachment { get; set; }
}
public class MyServices : Service
{
public object Any(TextFileTest request)
{
return new HttpResult(new FileInfo("~/textfile.txt".MapHostAbsolutePath()),
asAttachment:request.AsAttachment);
}
}
您可以使用或不使用asAttachment
选项对其进行测试:
此外,也应适用于文本文件。感谢您的快速响应。以下是我得到的错误,与文件大小无关:。有什么想法吗?@Seth你能通过url直接访问这个文件吗?我可以让您更新您的问题以包含返回此错误的原始HTTP请求和响应头吗?您可以从Chrome的WebInspector或Fiddler获取此信息。更新了要点:。如果您需要更多,请告诉我。……是的,我可以直接作为URL访问该文件。@Seth删除
.json
扩展是否可以解决问题?谢谢您的快速回复。以下是我得到的错误,与文件大小无关:。有什么想法吗?@Seth你能通过url直接访问这个文件吗?我可以让您更新您的问题以包含返回此错误的原始HTTP请求和响应头吗?您可以从Chrome的WebInspector或Fiddler获取此信息。更新了要点:。如果您需要更多,请告诉我……是的,我可以直接作为URL访问该文件。@Seth删除.json
扩展名是否可以解决此问题?