asp.net webapi 2 中的用户代理 IO 应用程序版本检查

问题描述 投票:0回答:1

我这里有一个问题。我的服务器上有 ASP.NET WebApi2,以及与其配合使用的 iOS 应用程序。现在我应该在服务器上实现应用程序版本检查,例如,如果用户有旧的应用程序版本,API 将发送相关错误。当前版本将存储在 web.config 中。问题是我需要在 API 工作流程管道中尽可能高地实现此检查。如果您有任何想法或建议可以与我分享,我将非常感激。

c# ios asp.net-web-api2
1个回答
0
投票

好的,我找到解决方案了。我创建了自己的 DelegatingHandler

public class VersionObsessedHandler : DelegatingHandler
{
    protected async override Task<HttpResponseMessage> SendAsync(
        HttpRequestMessage request,
        CancellationToken cancellationToken)
    {
        if (request.Headers.UserAgent.Any())
        {
            var product = request.Headers.UserAgent.FirstOrDefault(s => s.Product.Name == "APPLICATION").Product;

            if (product != null && request.Headers.UserAgent.Any(s => !string.IsNullOrEmpty(s.Comment) && s.Comment.ToLower().Contains("ios")) && !product.Version.Equals(Constants.IOS_APP_VERSION))
                return request.CreateResponse(HttpStatusCode.BadRequest, new { message = "Please update your application" });
        }

        return await base.SendAsync(request, cancellationToken); ;
    }
}

并将其添加到配置中

config.MessageHandlers.Add(new VersionObsessedHandler());
© www.soinside.com 2019 - 2024. All rights reserved.