相关疑难解决方法(0)

ServiceStack并返回一个流

我刚刚开始使用ServiceStack这是一个了不起的库.

但是,我有一个业务需求,我们必须返回xml和json,其中xml必须是特定格式.

例如,我们现有的客户期望xml的格式:

<service name="service1" type="audio" .../>
Run Code Online (Sandbox Code Playgroud)

所以基本上是一堆属性.

我知道ServiceStack使用DTO的概念并使用DataContractSerializer返回xml元素而不是上面的表单中的xml属性.

我仍然希望将DTO用于请求(在Accept头中传入application/xml或application/json)然后我可以创建自己的xml字符串或json字符串,然后将它们返回为:

string result = "....xml or json string...";
return new MemoryStream(Encoding.UTF8.GetBytes(result));
Run Code Online (Sandbox Code Playgroud)

其中结果字符串可以是xml字符串或json字符串.

我在fiddler中注意到Content-Type的响应为text/html.

根据我使用的方法,我违反了任何REST原则吗?Content-Type是否会出现问题(text/html)?

如果我使用这种方法,它确实解决了业务需求.

编辑

我发现我可以返回一个httpResult:

return new HttpResult(
         new MemoryStream(Encoding.UTF8.GetBytes(result)), "application/xml");
Run Code Online (Sandbox Code Playgroud)

它给出了正确的内容类型.

那么,这是正确的方式,还是如果我沿着这条路走下去,我会遇到什么问题?

servicestack

12
推荐指数
1
解决办法
1万
查看次数

ServiceStack:服务目录中的静态文件?

我正在将我的独立本地Web服务器转换为使用ServiceStack来提供所有页面和资源.

我从这个问题看出来

使用servicestack提供静态文件

通过服务堆栈提供单个静态文件很容易.

在我的本土实现中,在检查URL是否匹配任何特定处理程序(相当于ServiceStack路由)之后,默认处理程序然后检查其HttpData目录中的静态文件以匹配URL.

如果该文件不存在,则会生成404错误.

如果没有其他服务匹配,ServiceStack用于从文件系统提供文件的最佳模式是什么?请注意,我在没有IIS的独立模式下使用它.

这些文件可以是HTML,PNG,JS和少数其他内容类型.

注意:我看到ServiceStack.Razor包可能有助于我的要求,但我找不到相关文档.我将就此提出一个单独的问题.

编辑:我在这个问题中找到了一个参考

使用ServiceStack为根路径'/'创建路由

说明

注册IAppHost.CatchAllHandlers- 调用未匹配的请求.

到目前为止,我还没有找到任何关于如何注册的文档或示例.注意:我是独立运行的,因此需要在C#中完成,而不是使用XML.

c# servicestack

3
推荐指数
1
解决办法
3514
查看次数

标签 统计

servicestack ×2

c# ×1