开发者

Edit System.Servicemodel values programmatically?

When using WCF, there is a section in the web.config as below.

<system开发者_如何转开发.serviceModel>
   <services>
      <service name="abc">
        <endpoint /> <---this
      </service>
   </services>
</system.serviceModel>

Is it possible to edit the area I've marked programmatically?

I can see there is a sytem.serviceModel namespace, but other than that I'm a bit lost.


If you want to change these parameters at runtime you can override ServiceHost.OnOpening() E.g. to change port:

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();
}


To complement Mike Mozhaev's answer, since your service is hosted in IIS you'll need a ServiceHostFactory to get a reference to the service host (or to use your own host). There's some information about it at http://blogs.msdn.com/b/carlosfigueira/archive/2011/06/14/wcf-extensibility-servicehostfactory.aspx.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜