Wcf Web API沙盒端点处理
本文关键字:端点 处理 Web API Wcf | 更新日期: 2023-09-27 17:58:50
我有一个api,它将公开,并有一个沙箱。我在我的ResourceFactory中写了一些代码,所以api.sandbox.whatever/什么都可以,参数中的sandbox=true也可以,但这感觉像是一个巨大的黑客攻击。有更好的方法吗?
这是我的代码:
public class NinjectResourceFactory : IResourceFactory
{
private readonly IKernel _productionKernel;
private readonly IKernel _sandboxKernel;
public NinjectResourceFactory()
{
_productionKernel = new StandardKernel(new QueryMasterModule());
_sandboxKernel = new StandardKernel(new QueryMasterModule(true));
}
public object GetInstance(Type serviceType, InstanceContext instanceContext, HttpRequestMessage request)
{
string uri = request.RequestUri.ToString();
if (uri.Contains(".sandbox."))
{
return _sandboxKernel.Get(serviceType);
}
else if (uri.Contains("sandbox=true"))
{
request.RequestUri = new Uri(uri.Replace("sandbox=true", ""));
return _sandboxKernel.Get(serviceType);
}
else
{
return _productionKernel.Get(serviceType);
}
}
public void ReleaseInstance(InstanceContext instanceContext, object service)
{
// todo do I need to implement this?
}
}
如果它应该是一个真正的沙箱,那么您不希望这两个站点在同一进程中运行。我会部署两个网站,让IIS根据主机名决定哪一个。这样,沙箱将与生产隔离,这就是沙箱的目的。