我在Service Fabric 2.7上使用ASP.NET Core 1.1网站,这是一个面向公众的网站,所有通信都通过SSL(端口443)完成。
但是,如果有人试图错误地连接到端口80(http),我想将它们转发到同一个URL,但切换到端口443(https)。
我实现这一目标的方法是在同一个ASP.NET Core应用程序中有两个端口侦听器,因为为端口重定向提供额外的无状态服务似乎很荒谬。
我的问题是:
答案 0 :(得分:0)
添加重定向规则以强制执行https:
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
loggerFactory.AddConsole(Configuration.GetSection("Logging"));
loggerFactory.AddDebug();
var options = new RewriteOptions()
.AddRedirectToHttps();
app.UseRewriter(options);
服务清单:
<Resources>
<Endpoints>
<Endpoint Name="ServiceEndpoint1" Protocol="http" Port="80"/>
<Endpoint Name="ServiceEndpoint2" Protocol="https" Port="443"/>
</Endpoints>
</Resources>
沟通听众:
var endpoints = Context.CodePackageActivationContext.GetEndpoints()
.Where(endpoint => endpoint.Protocol == EndpointProtocol.Http || endpoint.Protocol == EndpointProtocol.Https)
.Select(endpoint => endpoint.Name);
return endpoints
.Select(endpoint => new ServiceInstanceListener(serviceContext =>
new KestrelCommunicationListener(serviceContext, endpoint), (url, listener) =>{[..]}));