我这里有一个问题。我的服务器上有 ASP.NET WebApi2,以及与其配合使用的 iOS 应用程序。现在我应该在服务器上实现应用程序版本检查,例如,如果用户有旧的应用程序版本,API 将发送相关错误。当前版本将存储在 web.config 中。问题是我需要在 API 工作流程管道中尽可能高地实现此检查。如果您有任何想法或建议可以与我分享,我将非常感激。
好的,我找到解决方案了。我创建了自己的 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());