我正在做以下工作
//Define the service host
this._smeediPluginServiceHost = new ServiceHost(typeof(SmeediServiceHost), smeediServiceUri);
this._smeediPluginServiceHost.AddServiceEndpoint(typeof(ISmeediServiceHost), GetBinding(), smeediServiceUri);
SetupAndStartWebService(_smeediPluginServiceHost);
private void SetupAndStartWebService(ServiceHost serviceHost, ServiceDiscoveryBehavior serviceDiscoveryBehavior = null)
{
//Define service behaviours
ServiceMetadataBehavior serviceMetadataBehavior = new ServiceMetadataBehavior();
serviceMetadataBehavior.HttpGetEnabled = true;
//Add the behaviours to the service
serviceHost.Description.Behaviors.Add(serviceMetadataBehavior);
if (serviceDiscoveryBehavior != null)
serviceHost.Description.Behaviors.Add(serviceDiscoveryBehavior);
serviceHost.Open();
} 我需要向Service传递一个参数,但我不知道如何传递。我看过How do I pass values to the constructor on my wcf service?,但还是想不通。谢谢
发布于 2013-05-11 08:01:07
如果我理解正确的话,您希望将参数传递给服务实现类的构造函数。你可以通过passing an of the service class to the ServiceHost constructor来实现,而不是它的类型。这就是:
// Create the service instance
var instance = new SmeediServiceHost("some parameters");
// Define the service host using the above instance
this._smeediPluginServiceHost = new ServiceHost(instance, smeediServiceUri);Caution -使用此方法意味着您正在使用服务类的单个实例。如果每个会话或每个请求都需要一个新实例,那么可以考虑使用this answer中描述的ServiceHostFactory。
https://stackoverflow.com/questions/14206267
复制相似问题