Обработка конечной точки песочницы веб-API Wcf - PullRequest
1 голос
/ 11 июня 2011

У меня есть API, который будет публично выставлен и у него есть песочница. Я написал некоторый код в моей ResourceFactory, так что api.sandbox.wh независимо / независимо будет работать, а также 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?
    }
}

1 Ответ

0 голосов
/ 11 июня 2011

Если это настоящая песочница, то вы не хотите, чтобы два сайта работали в одном процессе. Я бы развернул два веб-сайта и позволил IIS решить, какой из них основан на имени хоста. Таким образом, песочница будет изолирована от производства, что является целью песочницы.

...