Есть ли способ сделать это ...
[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)]
... программно?
Причина в том, что я хочу передать экземпляр моего сервиса прямо в мойСамоподдерживающийся вспомогательный класс при тестировании интеграции моего сервиса.
Я использую Castle Windsor для создания всех своих объектов, что прекрасно работает при использовании тестового веб-сайта.Но я получаю следующую ошибку, когда пытаюсь использовать свой вспомогательный класс HttpWebService ...
System.InvalidOperationException was unhandled by user code
Message=In order to use one of the ServiceHost constructors that takes a service instance, the InstanceContextMode of the service must be set to InstanceContextMode.Single. This can be configured via the ServiceBehaviorAttribute. Otherwise, please consider using the ServiceHost constructors that take a Type argument.
Source=System.ServiceModel
Это конструктор моего вспомогательного класса ...
public HttpWebService(string baseUri, string acceptType, TApi serviceInstance = null)
{
_baseUri = baseUri;
_acceptType = acceptType.ToLower();
_host = serviceInstance == null
? new HttpServiceHost(typeof (TApi), baseUri)
: new HttpServiceHost(serviceInstance, baseUri);
_host.Open();
_client = new HttpClient();
_client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue(_acceptType));
}
Итак, янужно программно установить InstanceContextMode
в «режиме тестирования интеграции», т. е. в моем классе помощника.
Я думаю, мне нужно сделать что-то вроде этого ...
if (serviceInstance != null)
{
_host = new HttpServiceHost(serviceInstance, baseUri);
var whatDoIDoNow = null;
_host.Description.Behaviors.Add(whatDoIDoNow);
}
Любая помощь / руководство было бы замечательно, поскольку я действительно застрял в этом.