因此,在我们旧的 WCF 休息服务中,我们有一个帮助类,它将查看响应对象并运行接口成员 GetStatus 来检索状态代码,然后将其设置为 WebOperationContext。在 web api 中,这不再可能,因此我们正在研究DelegatingHandler
是否可以设置它。这是场景:
并非所有 POST 都会生成201 - Created
代码。例如,一些用于具有复杂参数的 GET 类型操作。但是,某些 POST 操作将导致 201。在我们的响应对象中,我们有一个调用的接口,该接口IResult
有一个方法,该方法GetResult()
返回一个 HttpStatus 代码,该代码在操作期间运行的业务逻辑中设置。因此,如果我们要运行服务操作(帖子)
var result = AdvancedSearch(myPayload);
然后运行result.GetResult()
,它将返回HttpStatus
200。但是,如果我们要运行
var result = AddNewUser(myPayload);
然后运行result.GetResult()
;它将返回HttpStatus
201
现在,在这些应该返回 201 的操作中,我只需从request.CreateResponse(...)
;创建一个新的响应对象。控制器本身的方法。但是,团队中的一些更高级的家伙不喜欢它。他们想要一个核心来处理这个问题。类似于我们之前的东西。
由于没有设置响应代码的全局上下文,我想我会尝试通过创建一个DelegatingHandler
. 我知道您可以处理该Continue
方法中的响应,但是,我不确定这是否可行。我意识到这个方法在实际 MVC 框架之外的不同管道中运行;我看不到任何从接口检索响应有效负载并从接口HttpResponseMessage
运行方法的方法。GetResult()
IResult
这可能吗?还有其他方法可以做到这一点吗?我是否卡在控制器中设置响应(实际上,我对此表示满意。我只是在尽职调查)。
TIA