有没有办法在运行时设置通常在basicHttpBinding的配置中指定的传输安全性,可能是通过实现IEndpointBehavior?
基本上是这样的:
<binding name="DfsAgentService" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" maxBufferSize="1000000" maxBufferPoolSize="10000000" maxReceivedMessageSize="1000000" messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered" useDefaultWebProxy="true">
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" maxBytesPerRead="4096" maxNameTableCharCount="16384"/>
<security mode="None"/><!--Transport-->
</binding>
使用此(或其他)代替:
namespace Endpoints {
class DfsEndpoint : IEndpointBehavior{
#region IEndpointBehavior Members
void IEndpointBehavior.AddBindingParameters(ServiceEndpoint endpoint, System.ServiceModel.Channels.BindingParameterCollection bindingParameters) {
throw new NotImplementedException();
}
void IEndpointBehavior.ApplyClientBehavior(ServiceEndpoint endpoint, ClientRuntime clientRuntime) {
throw new NotImplementedException();
}
void IEndpointBehavior.ApplyDispatchBehavior(ServiceEndpoint endpoint, EndpointDispatcher endpointDispatcher) {
throw new NotImplementedException();
}
void IEndpointBehavior.Validate(ServiceEndpoint endpoint) {
throw new NotImplementedException();
}
#endregion
}
}
是否可以更改安全模式?
答案 0 :(得分:0)
我认为不可能通过端点行为来实现这一点。行为不能及早修改绑定配置。
但是,它可以用不同的方式在代码中完成。 BasicHttpBinding有一个构造函数重载,允许指定安全模式:
BasicHttpBinding binding = new BasicHttpBinding(BasicHttpSecurityMode.Transport);
这必须在服务启动之前完成,并假设您自己创建ServiceHost和端点。