【发布时间】:2013-04-28 06:00:51
【问题描述】:
假设我有这样的路线:
[Route("/users/{Id}", "DELETE")]
public class DeleteUser
{
public Guid Id { get; set; }
}
如果我使用带有自定义标头的 CORS,则会发送一个 OPTIONS 预检请求。这将发生在所有请求上。使用上面的路由,路由会触发,但是 OPTIONS 会 404 并且 ajax 错误处理程序会触发。
我可以将路线修改为[Route("/users/{Id}", "DELETE OPTIONS")],但我需要在我拥有的每条路线上都这样做。有没有办法全局允许所有自定义路由的 OPTIONS?
编辑
因为当 RequestFilter 允许 OPTIONS 时,这种行为看起来是不正确的,所以我暂时使用一个子类属性,它只是自动将 OPTIONS 添加到动词
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = true, Inherited = true)]
public class ServiceRoute : RouteAttribute
{
public ServiceRoute(string path) : base(path) {}
public ServiceRoute(string path, string verbs)
: base(path, string.Format("{0} OPTIONS", verbs)) {}
}
【问题讨论】:
标签: routing servicestack