AspNetCore.Proxy 重用连接错误信息
AspNetCore.Proxy reuse connection error message
我使用 AspNetCore.Proxy 来处理对 SSRS(报表服务)的请求
应用程序 -> 代理(应用程序内部)-> SSRS
可以从外部网络访问该应用程序。
只能从内部网络 (HTTP) 访问 SSRS
在 HTTP (80) 上发布应用程序时,不会发生任何问题或错误。
但是,当应用程序在 HTTPS (443) 上发布时 - 发生重用连接错误。
SSRS 在 HTTP (80)
上使用自己的内部 Web 门户
Request could not be proxied.
Authentication failed because the connection could not be reused.
那么,如何解决这个错误?
应用程序代理配置:
app.UseProxies(proxies =>
{
var url = (string)null;
proxies.Map(
"ReportServer.aspx",
proxy => proxy.UseHttp((context, args) =>
{
url = $"{_reportSettings.SSRSReportServerBaseUrl}/ReportServer/Pages/ReportViewer.aspx" + context.Request.QueryString;
_logger.WriteWithCallerName(LogLevel.Debug, "Startup::Proxy", url);
return url;
},
builder => builder.WithHttpClientName(HTTP_CLIENT_NAME))
);
proxies.Map(
_reportSettings.SSRSProxyRouteBase,
proxy => proxy.UseHttp((context, args) =>
{
url = $"{_reportSettings.SSRSReportServerBaseUrl}/ReportServer/Pages/ReportViewer.aspx" + context.Request.QueryString;
_logger.WriteWithCallerName(LogLevel.Debug, "Startup::Proxy", url);
return url;
},
builder => builder.WithHttpClientName(HTTP_CLIENT_NAME))
);
proxies.Map(
_reportSettings.SSRSProxyRouteBase + "/{**rest}",
proxy => proxy.UseHttp((context, args) =>
{
url = $"{_reportSettings.SSRSReportServerBaseUrl}/ReportServer/" + args["rest"] + context.Request.QueryString;
_logger.WriteWithCallerName(LogLevel.Debug, "Startup::Proxy", url);
return url;
},
builder => builder.WithHttpClientName(HTTP_CLIENT_NAME))
);
});
来自设置的参数:
"SSRSReportServerBaseUrl": "http://172.16.1.40",
"SSRSProxyRouteBase": "ReportServer",
我终于有了可行的解决方案。
代理库 github 页面
中描述的详细信息
我使用 AspNetCore.Proxy 来处理对 SSRS(报表服务)的请求
应用程序 -> 代理(应用程序内部)-> SSRS
可以从外部网络访问该应用程序。 只能从内部网络 (HTTP) 访问 SSRS
在 HTTP (80) 上发布应用程序时,不会发生任何问题或错误。 但是,当应用程序在 HTTPS (443) 上发布时 - 发生重用连接错误。 SSRS 在 HTTP (80)
上使用自己的内部 Web 门户Request could not be proxied. Authentication failed because the connection could not be reused.
那么,如何解决这个错误?
应用程序代理配置:
app.UseProxies(proxies =>
{
var url = (string)null;
proxies.Map(
"ReportServer.aspx",
proxy => proxy.UseHttp((context, args) =>
{
url = $"{_reportSettings.SSRSReportServerBaseUrl}/ReportServer/Pages/ReportViewer.aspx" + context.Request.QueryString;
_logger.WriteWithCallerName(LogLevel.Debug, "Startup::Proxy", url);
return url;
},
builder => builder.WithHttpClientName(HTTP_CLIENT_NAME))
);
proxies.Map(
_reportSettings.SSRSProxyRouteBase,
proxy => proxy.UseHttp((context, args) =>
{
url = $"{_reportSettings.SSRSReportServerBaseUrl}/ReportServer/Pages/ReportViewer.aspx" + context.Request.QueryString;
_logger.WriteWithCallerName(LogLevel.Debug, "Startup::Proxy", url);
return url;
},
builder => builder.WithHttpClientName(HTTP_CLIENT_NAME))
);
proxies.Map(
_reportSettings.SSRSProxyRouteBase + "/{**rest}",
proxy => proxy.UseHttp((context, args) =>
{
url = $"{_reportSettings.SSRSReportServerBaseUrl}/ReportServer/" + args["rest"] + context.Request.QueryString;
_logger.WriteWithCallerName(LogLevel.Debug, "Startup::Proxy", url);
return url;
},
builder => builder.WithHttpClientName(HTTP_CLIENT_NAME))
);
});
来自设置的参数:
"SSRSReportServerBaseUrl": "http://172.16.1.40",
"SSRSProxyRouteBase": "ReportServer",
我终于有了可行的解决方案。 代理库 github 页面
中描述的详细信息