我遇到了传递文件名的问题,包括扩展到Service Stack方法。这就是我想要实现的目标:
[Route("/files/{FileName}")]
public class GetFile : IReturn<Stream>
{
public string FileName { get; set; }
}
作为FileName,我需要传递类似“SomeFile.extension”的内容。 我试过了
[Route("/files/{FileName}.{Extension}")]
public class GetFile : IReturn<Stream>
{
public string FileName { get; set; }
public string Extension { get; set; }
}
也没有运气。 作为回应,我得到了
HTTP错误404.0 - 未找到 您要查找的资源已被删除,名称已更改或暂时不可用。
有没有人知道如何在服务堆栈路由中允许文件扩展名?
提前谢谢。
答案 0 :(得分:2)
实际上解决方案是添加处理程序
<httpHandlers>
<add verb="*" path="*.*" type="App.Handlers.SomeHandler" />
</httpHandlers>
并在那里重写网址
string url = Request.RawUrl.Replace(".", "%2E");
context.RewritePath(url);
答案 1 :(得分:1)
您可能正在使用ServiceStack中的内容协商功能,这是一种使用.extension指定格式的方法
https://github.com/ServiceStack/ServiceStack/wiki/Routing#content-negotiation
您可以通过设置:
来禁用Config.AllowRouteContentTypeExtensions = false
如果这不起作用,您可以review issues with dots in routing