我想知道在不同环境(DEV,TEST,PRE-PROD,PROD)的配置文件中保存WCF端点信息的最佳方法是什么。
我熟悉这样做的一种方法 - 1.维护不同的配置文件(针对每个环境)并相应地部署它们。
有人可以建议最好的方法吗?
答案 0 :(得分:0)
您可以在运行时使用endpointbehaviors配置端点。在此行为中,您可以获取机器名称。根据计算机名称,您可以为端点设置端点地址,然后启动该服务。 这是一个链接:https://msdn.microsoft.com/en-us/library/vstudio/ms730137%28v=vs.100%29.aspx
修改强>
所以你写道:
class CustomEndpointBehavior : IEndpointBehavior{
public void Validate(ServiceEndpoint endpoint)
{
// get here the address and rewrite it dependig on the machinemane e.g.
// remember to set the new address to the endpoint!
}
public void AddBindingParameters(ServiceEndpoint endpoint, BindingParameterCollection bindingParameters)
{
}
public void ApplyDispatchBehavior(ServiceEndpoint endpoint, EndpointDispatcher endpointDispatcher)
{
}
public void ApplyClientBehavior(ServiceEndpoint endpoint, ClientRuntime clientRuntime)
{
}
}
在启动服务的类中,您需要将CustomEndpointBehavior设置为serviceHost,如:
serviceHost.Description.Behaviors.Add(new CustomEndpointBehavior());
答案 1 :(得分:0)
我认为这是链接。创建多个配置,然后使用预构建事件来复制它。 http://www.hanselman.com/blog/ManagingMultipleConfigurationFileEnvironmentsWithPreBuildEvents.aspx
在你拥有visual studio 2010及更高版本之后,它将能够合并配置。 https://msdn.microsoft.com/en-us/library/dd465326(v=vs.110).aspx