【问题标题】:Wcf Web API Sandbox Endpoint HandlingWcf Web API 沙盒端点处理
【发布时间】:2011-06-11 16:22:27
【问题描述】:

我有一个将公开的 api 并有一个沙盒。我已经在我的 ResourceFactory 中编写了一些代码,因此 api.sandbox.whatever/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?
    }
}

【问题讨论】:

    标签: c# api sandbox wcf-web-api


    【解决方案1】:

    如果它应该是一个真正的沙盒,那么您不希望这两个站点在同一个进程中运行。我会部署两个网站,让 IIS 根据主机名决定哪一个。这样沙盒就会与生产隔离,这就是沙盒的目的。

    【讨论】:

      猜你喜欢
      • 2013-03-22
      • 1970-01-01
      • 2011-09-04
      • 2016-10-12
      • 2020-11-02
      • 2015-08-03
      • 2015-11-16
      • 1970-01-01
      • 2011-09-27
      相关资源
      最近更新 更多