我觉得我有这个错误(或倒退)。我正在寻找确定请求来自哪个环境,以便我可以确定要访问的数据库(基于引用者URL)。
终点是"自托管"我们的某个服务器上的API,并且我希望将来自开发和生产的请求发送到服务,并相应地处理请求。我希望避免添加其他框架,以及避免在每个动作调用中处理环境。
这是我到目前为止所做的事情。
public ServiceProvider svc;
public ECTaskService lab;
public BaseAPIController()
{
//I WAS HOPING FOR THE ENVIRONMENT REFERENCE HERE....
svc = new ServiceProvider();
lab = new ECTaskService();
}
我希望我可以从上面的构造函数访问下面的过滤器上下文,将环境传递给服务提供者,服务提供者将根据需要处理数据库/ dev环境的所有方面。
public class LabelServerFilter : ActionFilterAttribute {
public override void OnActionExecuting(HttpActionContext actionContext)
{
Environment(actionContext);
base.OnActionExecuting(actionContext);
}
public override Task OnActionExecutingAsync(HttpActionContext actionContext, CancellationToken cancellationToken)
{
Environment(actionContext);
return base.OnActionExecutingAsync(actionContext, cancellationToken);
}
public string Environment(HttpActionContext actionContext)
{
try
{
var env = "PRODUCTION";
Uri referrer = actionContext.Request.Headers.Referrer;
if (referrer != null)
{
string clientDomain = referrer.GetLeftPart(UriPartial.Authority);
if (clientDomain.IndexOf("myinternalurldev") > -1)
{
env = "DEVELOPMENT";
}
}
//Console.Write("[" + env + "]");
return env;
}
catch (Exception ex)
{
Console.WriteLine(ex.Message, ex);
}
return "PRODUCTION";
}
}
提前致谢!