如何配置 wcf web api 服务以进行 HTTPS 传输? 有谁知道这在最终版本中会有多大变化,因为这是他们所说的将改变的领域之一?
最佳答案
要支持 HTTPS,您需要在 HttpBinding 上启用传输安全性。这可以通过从 HttpConfigurableServiceHostFactory 派生并重写 CreateServiceHost 来完成,如下所示:
public class HypertextTransferProtocolSecureServiceHostFactory : HttpConfigurableServiceHostFactory
{
protected override ServiceHost CreateServiceHost(Type serviceType, Uri[] baseAddresses)
{
var configurationBuilder = HttpHostConfiguration.Create();
var host = new HttpConfigurableServiceHost(serviceType, configurationBuilder, baseAddresses);
foreach (var endpoint in host.Description.Endpoints.Where(e => e.ListenUri.Scheme == "https"))
{
var binding = endpoint.Binding as HttpBinding;
if (binding != null)
{
binding.Security.Mode = HttpBindingSecurityMode.Transport;
}
}
return host;
}
}
最后必须将 HypertextTransferProtocolSecureServiceHostFactory 添加到 RouteTable:
RouteTable.Routes.Add(new ServiceRoute("routePrefix", new HypertextTransferProtocolSecureServiceHostFactory(), typeof(ServiceType)));
关于WCF Web API 安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6589813/