如何解决为了避免出现502错误
我构建了一个netcore(2.2)Web应用程序,该应用程序集成了Sustainsys库以与Microsoft ADFS SAML2连接并向用户授予访问权限。
它已经正常工作,但是最近用户在查看日志后似乎报告ADFS停止响应导致502错误的Web应用程序请求后,用户报告了502错误,在用户清除了浏览器cookie之后,它又可以正常工作了。 我真的不知道这是什么根本原因。
我一直在想是否有可能为Saml2Handler设置一个属性,以避免它一直等待响应直到失败。
失败:Sustainsys.Saml2.AspNetCore2.Saml2Handler [0] 无法为idp http://id.enterprise.kr/adfs/services/trust System.Net.WebException加载元数据: 无法建立SSL连接,请参阅内部异常。 无法从传输连接中读取数据:现有 远程主机强行关闭了连接。 ---> System.Net.Http.HttpRequestException:无法建立SSL连接 建立,请参阅内部异常。 ---> System.IO.IOException:无法 从传输连接读取数据:现有连接 被远程主机强行关闭。 ---> System.Net.Sockets.SocketException:现有连接为 被远程主机强行关闭---内部异常堆栈结束 跟踪---在 System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.ThrowException(SocketError 错误) System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.GetResult(Int16 令牌)在System.Net.FixedSizeReader.ReadPacketAsync(Stream 传输,AsyncProtocolRequest请求) System.Net.Security.SslState.ThrowIfExceptional()在 System.Net.Security.SslState.InternalEndProcessAuthentication(LazyAsyncResult lazyResult) System.Net.Security.SslState.EndProcessAuthentication(IAsyncResult 结果) System.Net.Security.SslStream.EndAuthenticateAsClient(IAsyncResult asyncResult) System.Net.Security.SslStream。 c.b__47_1(IAsyncResult ) System.Threading.Tasks.TaskFactory
1.FromAsyncCoreLogic(IAsyncResult iar,Func
2 endFunction,操作1 endAction,Task
1承诺,布尔值 requireSynchronization) System.Net.Http.ConnectHelper。EstablishmentSslConnectionAsyncCore(流流,> SslClientAuthenticationOptions sslOptions,CancellationToken cancelToken) ---内部异常堆栈跟踪的结尾--- 在System.Net.Http.ConnectHelper。EstablishmentSslConnectionAsyncCore(Stream 流,SslClientAuthenticationOptions sslOptions,CancellationToken cancelToken) 在System.Threading.Tasks.ValueTask1.get_Result() at System.Net.Http.HttpConnectionPool.CreateConnectionAsync(HttpRequestMessage > request,CancellationToken cancellationToken) at System.Threading.Tasks.ValueTask
1.get_Result() 在 System.Net.Http.HttpConnectionPool.WaitForCreatedConnectionAsync(ValueTask1 > creationTask) at System.Threading.Tasks.ValueTask
1.get_Result() 在 System.Net.Http.HttpConnectionPool.SendWithRetryAsync(HttpRequestMessage 请求,布尔值doRequestAuth,CancelationToken cancelToken) 在System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage请求, CancellationToken取消令牌) 在System.Net.Http.HttpClient.FinishSendAsyncUnbuffered(任务1 sendTask,HttpRequestMessage request,CancellationTokenSource cts,Boolean disposeCts) at System.Net.HttpWebRequest.SendRequest() at System.Net.HttpWebRequest.GetResponse() --- End of inner exception stack trace --- at System.Net.HttpWebRequest.GetResponse() at System.Net.WebClient.GetWebResponse(WebRequest request) at System.Net.WebClient.OpenRead(Uri address) at Sustainsys.Saml2.Metadata.MetadataLoader.Load(String metadataLocation,> IEnumerable
1 signingKeys,布尔validateCertificate,字符串 minIncomingSigningAlgorithm) 在Sustainsys.Saml2.Metadata.MetadataLoader.LoadIdp(String metadataLocation,布尔值unpackEntitiesDescriptor) 在Sustainsys.Saml2.IdentityProvider.DoLoadMetadata()
public async Task<IActionResult> Index(string returnUrl)
{
if (!User.Identity.IsAuthenticated)
{
await Microsoft.AspNetCore.Authentication.AuthenticationHttpContextExtensions.ChallengeAsync(HttpContext.Request.HttpContext,Sustainsys.Saml2.AspNetCore2.Saml2Defaults.Scheme,new AuthenticationProperties { RedirectUri = Url.Action(nameof(LoginCallback),new { returnUrl }) //RedirectUri = "/"
}
);
//seems like this one is raising error,when application got to many concurrent users request
var authenticateResult = await HttpContext.AuthenticateAsync(IdentityConstants.ExternalScheme);
}
SessionStateViewModel sessionState = new SessionStateViewModel();
return RedirectToAction("IndexTrust","Home",new { @identity = sessionState });
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。