2011-06-11 5 views
1

공개적으로 노출되고 샌드 박스가있는 API가 있습니다. ResourceFactory에 일부 코드를 작성 했으므로 api.sandbox.whatever/무엇이든지 작동하며 인수에서 sandbox = true가 작동하지만 거대한 핵 심처럼 느껴집니다. 더 좋은 방법이 있을까요? 진정한 샌드 박스해야하는데 경우Wcf 웹 API 샌드 박스 끝점 처리

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? 
    } 
} 

답변

0

는 다음 두 사이트가 동일한 프로세스에서 실행하지 않으 :

여기 내 코드입니다. 두 개의 웹 사이트를 배포하고 IIS가 호스트 이름을 기반으로 어느 웹 사이트를 결정하도록 할 것입니다. 그렇게하면 샌드 박스가 샌드 박스의 목적 인 프로덕션에서 격리됩니다.