我正在为nopcommerce购物车(ASP.NET Core 2.1)开发插件。在RouteProvider类中注册路由之前,我需要访问当前域名以进行一些验证检查,但是当使用IHttpContextAccessor获取Httpcontext并获取当前域时,Httpcontext为null。
是否有任何解决方案来访问路由提供程序类中的当前域名?
public void RegisterRoutes(IRouteBuilder routes)
{
var httpContextAccessor = EngineContext.Current.Resolve<IHttpContextAccessor>();
var domainName = httpContextAccessor.HttpContext.Request.Host.Value.ToString();
var pluginValidtyChecker = new PluginValidityChecker.ValidityChecker();
if (pluginValidtyChecker.CheckIsValid(domainName))
{
//Register routes
}
}
在我开发的应用程序中,用户首先输入插件应该使用的域名,然后购买插件。购买后我们生成一个与域名映射的许可证密钥,用户必须在插件设置中输入此许可证密钥。因为插件覆盖了nopcommerce的一些主要途径,我首先需要检查插件当前工作的许可证密钥和域名是否有效。必须在编译时注册此路由。
确保域名始终可用并不容易,因为程序员可以在配置文件或环境变量中定义域名。
此外,如果应用程序在AWS容器中运行,则配置稍微复杂一些,因为配置文件具有不同的结构。有一个Nuget-Package提供简单的东西,但仍然不是每个人都使用它。
因此,无法以防弹的方式确保您想要的东西。
如果有人能纠正我。我会很高兴,因为我有一个类似的问题,我可以为自己的应用程序解决,但我对我的解决方案感到不满意。