【发布时间】:2020-01-12 05:13:43
【问题描述】:
我正在构建一个 Web API,它将作为第 3 方应用程序和我的应用程序之间的连接器。 此应用程序将在服务器上运行,并将接收来自第 3 方应用程序的 POST 请求并发送它自己的 POST 请求作为响应。
在它开始发送这些请求之前,我的 Web API 需要向 3rd-party 服务发送一个 POST,因此它可以注册并接收一个授权令牌,它将用于它发回的请求,有点类似据我了解,到 OAuth 令牌。
由于我的代码都在 HttpPost 方法中,它只有在收到调用时才会被激活,并且该部分按预期工作。当服务通过身份验证并正在接收请求时,就可以了。问题是当我的服务或第 3 方重新启动时,当前令牌无效或丢失,需要再次请求新令牌。
我希望在服务启动时自动发送注册我的服务并接收令牌的调用。
目前我正在手动调用以在需要注册我的服务时触发,但这使得我必须在我的计算机上这样做,并且在我调用该请求之前不会建立连接。
这是我的代码示例:
public class Controller : ApiController
{
static string SessionToken = "";
[HttpPost]
[Route("connector/webhook")]
public async Task<HttpStatusCode> Webhook(UpdateContentRequestBody body)
{
var NO_ERROR = 0;
try
{
if (string.IsNullOrEmpty(SessionToken))
{
// This registers my service.
var registerConector = ConectorOSCCApi.RegisterConector();
if (respostaRegistrarConector.ErrorCode != NO_ERROR)
{
throw new Exception();
}
SessionToken = registerConector.SessionToken;
}
ConectorApi.KeepAliveRequest(SessionToken);
RepeatKeepAlive();
ProccessDataAndSendResponseRequest(body);
return HttpStatusCode.OK;
}
catch (Exception e)
{
SessionToken = "";
return HttpStatusCode.InternalServerError;
}
我希望注册服务的方法无需调用“连接器/webhook”即可运行,但其余处理和响应仅在收到此类调用时发生。我该怎么做?
编辑: 我的代码位于 ASP.NET Web 应用程序中。 我正在使用 .NET Framework 4.5 并在 IIS 上托管我的 Web 应用程序。
【问题讨论】:
-
这是完整的 .net 框架还是 .net 核心?您如何引导应用程序?
-
我将使用该信息编辑我的问题
-
将布尔值添加到设置为 false 的类中。发出请求时检查布尔值是否为假,只有在假时才启动服务。启动服务后设置 boolean true 这样您就不会尝试再次启动服务。
-
@jdweng。好的。但是我的代码是否仍然需要被请求调用才能启动整个逻辑?
-
取决于您想要启动服务的时间。布尔值可以放在任何类中,如果属性是public static,任何类都可以检查Controller中的布尔值。
标签: c# asp.net-web-api