.net 是否可以设置一个";“预期的”;来自委托处理程序的响应代码?

.net 是否可以设置一个";“预期的”;来自委托处理程序的响应代码?,.net,asp.net-mvc-4,asp.net-web-api,.net,Asp.net Mvc 4,Asp.net Web Api,因此,在旧的WCF rest服务中,我们有一个助手类,该类将查看响应对象并运行接口成员GetStatus来检索状态代码,然后将其设置为WebOperationContext。在WebAPI中,这已经不可能了,所以我们正在研究DelegatingHandler来设置这一点。以下是场景: 并非所有帖子都会产生201-创建的代码。例如,有些用于具有复杂参数的GET类型操作。然而,一些后期操作将导致201。在我们的响应对象中,我们有一个名为IResult的接口,它有一个方法GetResult(),该方法

因此,在旧的WCF rest服务中,我们有一个助手类,该类将查看响应对象并运行接口成员GetStatus来检索状态代码,然后将其设置为WebOperationContext。在WebAPI中,这已经不可能了,所以我们正在研究
DelegatingHandler
来设置这一点。以下是场景:

并非所有帖子都会产生
201-创建的
代码。例如,有些用于具有复杂参数的GET类型操作。然而,一些后期操作将导致201。在我们的响应对象中,我们有一个名为
IResult
的接口,它有一个方法
GetResult()
,该方法返回在操作期间运行的业务逻辑中设置的HttpStatus代码。因此,如果我们要运行服务操作(post)

var结果=高级搜索(myPayload)

然后运行
result.GetResult()
,它将返回200的
HttpStatus
。然而,如果我们要跑

var result=AddNewUser(myPayload)

然后运行
result.GetResult()
;它将返回201的
HttpStatus

现在,在这些应该返回201的操作中,我只是从
请求中创建一个新的响应对象。CreateResponse(…)
;方法在控制器本身中。然而,团队中一些更资深的人不喜欢这样。他们需要一些核心的东西来处理这件事。类似于我们以前的东西

由于没有设置响应代码的全局上下文,我想我应该通过创建
DelegatingHandler
来实现这一点。我知道您可以使用
Continue
方法处理响应,但是,我不确定这是否可行。我意识到这个方法运行在不同的管道中,在实际的MVC框架之外;我看不到任何方法可以从
HttpResponseMessage
检索响应负载,并从
IResult
界面运行
GetResult()
方法

这可能吗?还有别的办法吗?我是否被困在控制器中设置响应(事实上,我对此没有意见。我只是在做我的尽职调查)


TIA

HttpResponseMessage上有一个名为“TryGetContentValue”的扩展,您可以使用它在格式化程序序列化响应内容之前获取响应内容