我正在尝试通过c#代码运行我的Azure Web作业,但是它可以工作,但是它返回带有202状态代码的接受状态。
我正在将以下代码用于从Web应用程序调用webjob api的相同代码段。
答案 0 :(得分:0)
听起来好像您可能会怀疑HTTP响应状态代码应为200 OK
,而不是202 Accepted
,如果已成功处理HTTP请求。但是,200 OK
或202 Accepted
是合法且合理的,请参阅W3C RFC-2616的第10节10 Status Code Definitions
,以深入了解它们,如下所示。
10.2.1 200 OK (请求成功)。响应返回的信息取决于请求中使用的方法,对于 例如:
获取与所请求资源相对应的实体,该实体在 反应;
HEAD与请求的资源相对应的实体标题字段 在响应中发送而没有任何消息正文;
发布一个描述或包含操作结果的实体;
TRACE包含最后收到的请求消息的实体 服务器。
10.2.3 202已接受:请求已接受处理,但是处理尚未完成。该请求可能会或可能不会 最终会采取行动,因为处理时可能不允许这样做 实际发生。没有重新发送状态的功能 这样的异步操作编写代码。
202响应是有意拒绝的。其目的是 允许服务器接受对其他进程的请求(也许是 每天仅运行一次的面向批处理的过程,无需 要求用户代理与服务器的连接持续到 该过程完成。该实体返回此响应 应该包括请求当前状态的指示,以及 指向状态监视器的指针或用户何时的某种估计 可以期望请求能够得到满足。
同时,下面来自GitHub Kudu仓库的两个代码注释解释了为什么在这里使用202 Accepted
来触发webjobs。
I。 Kudu.Services/ServiceHookHandlers/FetchHandler.cs#L111
// Return a http 202: the request has been accepted for processing, but the processing has not been completed.
II。 Kudu.Services/Jobs/JobsController.cs#L191
// Return a 200 in the ARM case, otherwise a 202 can cause it to poll on /run, which we don't support
// For non-ARM, stay with the 202 to reduce potential impact of change
这取决于服务的设计意图。