从控制台应用程序调用web服务可以工作——web应用程序中的相同代码获得504网关超时



我正在尝试使用一个web服务,我可以通过在服务器上手动启动的裸控制台应用程序来实现这一点。在使用HangFire调度作业并每n分钟调用web服务的同一服务器上的web应用程序中;远程服务器返回一个错误:(504(网关超时";。

不幸的是,该服务不是公开的,因此不可能包含用于测试的链接。我在这个问题中调用的方法只是一个简单的echo方法,它返回我在请求中发送的相同消息。

相同的代码用于使用相同的绑定和端点设置进行调用。当测试两个应用程序都在同一台服务器上运行时。

有什么建议可以导致这些不同的结果,或者我如何从web应用程序中找出这个错误的真正原因?

var binding = new BasicHttpsBinding
{
MaxBufferSize = int.MaxValue,
MaxReceivedMessageSize = int.MaxValue,
ReaderQuotas = System.Xml.XmlDictionaryReaderQuotas.Max
};
var endpoint = new EndpointAddress(new Uri(settings.serviceUrl));
var channelFactory = new ChannelFactory<SoapApplication>(binding, endpoint);
// skip validating self signed cert for test
channelFactory.Credentials.ServiceCertificate.SslCertificateAuthentication = new X509ServiceCertificateAuthentication()
{ CertificateValidationMode = X509CertificateValidationMode.Custom, CustomCertificateValidator = new CustomValidator() };
var serviceClient = channelFactory.CreateChannel();
Console.WriteLine("Sending echo message...");
var echo = new Echo
{
text = "This is a test"
};
var response = await serviceClient.echoAsync(new Echo1(echo));

我不知道您服务器端的具体环境,所以我无法重现问题以找到问题的具体原因。

正如这个答案中所提到的:你可能需要去检查请求或主机本身是否有问题,也许主机在试图处理你的请求时陷入了无限循环,或者它只是"挂起";处理您请求的代理放弃并向您发送请求。

相关内容

  • 没有找到相关文章

最新更新