1

嗨,我想知道是否有人修改了 servicestack 中的 restfiles 示例,以便它可以从文件系统返回未更改的 xml 文件?

换句话说,充当网络服务器(IIS、cassini 或 apache 等),但使用 servicestack 附带的 REST 映射。

目前响​​应是预先格式化的,我看不出如何改变它。

4

2 回答 2

1

RestFiles 示例已经展示了如何从文件系统返回物理文件

return new HttpResult(targetFile, asAttachment:true);

这显示了使用自定义 HttpResult 返回下载文件的另一个示例:https ://stackoverflow.com/a/9843621/85785

于 2012-08-07T20:30:04.323 回答
1

我只想展示我对原始问题的解决方案,以防其他人希望修改 restfiles 示例的行为。mod允许您在不更改文件内容的情况下将xml或其他文件类型返回给浏览器:

public override object OnGet(Files request)
{
    var targetFile = GetAndValidateExistingPath(request);
    var isDirectory = Directory.Exists(targetFile.FullName);
    var hasParameters = this.RequestContext.AbsoluteUri.ToString().Contains("?") ? true : false;

    if (!isDirectory && request.ForDownload)
        return new HttpResult(targetFile, asAttachment:true);

    if (string.IsNullOrEmpty(targetFile.Name) || hasParameters)
    {
        var response = isDirectory
            ? new FilesResponse { Directory = GetFolderResult(targetFile.FullName) }
            : new FilesResponse { File = GetFileResult(targetFile) };
        return response;
    }
    return new HttpResult(targetFile);
}

所以基本上如果传入的请求为空或有参数,那么我们返回一个文件响应,否则我们返回一个直接显示文件内容的 HttpResult。我希望这对某人有用。

神话:如果代码有问题..让我们知道。我试图将示例转换为 .Net 4.0,但它在某处中断并且 /#!files 中的 ajax 文件内容查看和列表部分不显示。(也许我在 vs2010 转换期间在 web.config 中丢失了一些东西)。您会在不久的将来发布示例的 4.0 兼容版本吗?...再次感谢您的出色工作

于 2012-10-02T09:51:22.423 回答