使用WCF时,web.config中有一个部分如下所示。
<system.serviceModel>
<services>
<service name="abc">
<endpoint /> <---this
</service>
</services>
</system.serviceModel>
是否可以编辑我以编程方式标记的区域?
我可以看到有一个sytem.serviceModel命名空间,但除此之外我有点迷失。
答案 0 :(得分:3)
如果要在运行时更改这些参数,可以覆盖ServiceHost.OnOpening() 例如。改变港口:
protected override void OnOpening()
{
foreach (ServiceEndpoint endpoint in Description.Endpoints)
{
string uriString = string.Format("{0}://{1}:{2}{3}",
endpoint.Address.Uri.Scheme,
endpoint.Address.Uri.Host,
endpoint.Address.Uri.Port + _basePort,
endpoint.Address.Uri.LocalPath);
endpoint.Address = new EndpointAddress(uriString);
}
base.OnOpening();
}
答案 1 :(得分:2)
为了补充Mike Mozhaev的答案,由于您的服务托管在IIS中,因此您需要ServiceHostFactory
来获取对服务主机的引用(或使用您自己的主机)。在http://blogs.msdn.com/b/carlosfigueira/archive/2011/06/14/wcf-extensibility-servicehostfactory.aspx处有一些相关信息。