User-Agent IOs 应用程序版本检查 asp.net webapi 2
User-Agent IOs application version check in asp.net webapi 2
我这里有问题。我的服务器上有 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());
我这里有问题。我的服务器上有 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());