servicestack,C#,Asp.net,servicestack" /> servicestack,C#,Asp.net,servicestack" />

C# 如何使用ServiceStack返回大型文本文件?

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

我有一个web服务,它需要为客户端上的AJAX调用返回一个大文本文件。首先,我有一个文本文件的有效路径:

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
选项对其进行测试:

您也可以直接访问文本文件(即不使用服务):

此外,还应适用于文本文件。

我刚刚介绍了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
选项对其进行测试:

您也可以直接访问文本文件(即不使用服务):


此外,也应适用于文本文件。

感谢您的快速响应。以下是我得到的错误,与文件大小无关:。有什么想法吗?@Seth你能通过url直接访问这个文件吗?我可以让您更新您的问题以包含返回此错误的原始HTTP请求和响应头吗?您可以从Chrome的WebInspector或Fiddler获取此信息。更新了要点:。如果您需要更多,请告诉我。……是的,我可以直接作为URL访问该文件。@Seth删除
.json
扩展是否可以解决问题?谢谢您的快速回复。以下是我得到的错误,与文件大小无关:。有什么想法吗?@Seth你能通过url直接访问这个文件吗?我可以让您更新您的问题以包含返回此错误的原始HTTP请求和响应头吗?您可以从Chrome的WebInspector或Fiddler获取此信息。更新了要点:。如果您需要更多,请告诉我……是的,我可以直接作为URL访问该文件。@Seth删除
.json
扩展名是否可以解决此问题?