我在调用外部支付服务时收到此错误。该错误仅在部署到azure时发生,并且在本地运行良好。
"Web服务器在充当网关或代理服务器时收到无效响应。您要查找的页面出现问题,无法显示。当Web服务器(充当网关或代理)联系上游内容服务器时,它收到了来自内容服务器的无效响应。"
支付服务类是用这个wdsl 生成的
https://pal-test.adyen.com/pal/Payment.wsdl
似乎错误发生在Payment类的authorize方法中,但即使所有日志选项都打开,我也无法让azure记录任何有用的内容。
其他人有这个问题吗?
更新
我把问题缩小了一点。以下控制器的测试方法将导致azure网站崩溃并重新启动502。
public class TestController : Controller
{
public string test()
{
try
{
var webClient = new WebClient();
var stream = webClient.OpenRead("https://pal-test.adyen.com/pal/servlet/soap/Payment");
var streamReader = new StreamReader(stream);
return streamReader.ReadToEnd();
}
catch (Exception exp)
{
errorResult(exp);
}
return formattedResult(result);
}
}
微软似乎已经删除了一些azure网站的HTTP协议。具体来说,它被阻止了,看起来像是SEC_I_RENEGOTIATE。
周围有工作吗?有人知道这种方法是否适用于网络角色吗?
可能是使用中的代理服务器有问题。。。尝试以下
UseDefaultWebProxy=false
以使用特定于计算机的代理设置停止应用程序,而是使用任何用户定义的/web.config设置。
正如JcFX在上面评论的那样,您使用的URL不正确!。。。应该是
https://pal-test.adyen.com/pal/servlet/soap/Payment
即您在pal测试中缺少连字符
当我转到那个url时,它似乎想使用HTTP身份验证,你得到了可以设置的测试系统的密码吗?
webClient.Credentials = new NetworkCredential("username", "password");
您是否使用.pfx证书文件或类似文件?
如果是这样的话,在Azure中引用它的方式可能会有问题,请考虑使用Azure CertificateStore,而不是将证书放在文件系统上(如果你现在正在这样做)
有关更多详细信息:https://msdn.microsoft.com/en-us/library/azure/gg465712.aspx
同样相关:
https://azure.microsoft.com/blog/2014/10/27/using-certificates-in-azure-websites-applications/
希望这能有所帮助!祝你好运,这个问题对我来说简直是一场噩梦!