C# Azure网站本地呼叫WebException
我正在尝试使用Phantom和Selenium在Azure中呼叫我自己的网站 它在本地工作,但在我将其部署到Azure时无法工作,这会导致以下异常: 意外错误。System.Net.WebException:无法连接到远程服务器---> () 我想我可能必须添加防火墙规则或其他东西,但我真的不确定。该网站是一个Azure网站C# Azure网站本地呼叫WebException,c#,asp.net-mvc,azure,selenium,azure-web-app-service,C#,Asp.net Mvc,Azure,Selenium,Azure Web App Service,我正在尝试使用Phantom和Selenium在Azure中呼叫我自己的网站 它在本地工作,但在我将其部署到Azure时无法工作,这会导致以下异常: 意外错误。System.Net.WebException:无法连接到远程服务器---> () 我想我可能必须添加防火墙规则或其他东西,但我真的不确定。该网站是一个Azure网站 如果我可以在不涉及服务器配置的情况下从C#代码修复此问题,那将是更好的选择。我假设我遇到了同样的问题,但是,在其他一些场景中,我需要从后台工作线程向网站的公共界面发出web
如果我可以在不涉及服务器配置的情况下从C#代码修复此问题,那将是更好的选择。我假设我遇到了同样的问题,但是,在其他一些场景中,我需要从后台工作线程向网站的公共界面发出web请求。它在本地工作,但一旦部署到Azure中,请求就开始抛出由该
SocketException
引起的WebException
虽然我不需要以任何方式处理web响应,但这里的解决方案是将web响应存储在堆栈上,并通过调用其Close()
方法正确地处理它:
HttpWebResponse response = null;
try {
var webReq = WebRequest.CreateHttp(url);
webReq.Method = "GET";
response = (HttpWebResponse)webReq.GetResponse();
}
finally {
if (response != null) response.Close();
}
异常稳定地从请求249开始(前248个请求没有抛出异常)。因此,我假设某种web请求或web响应池是在后台发生的,不调用响应对象上的
Close()
可能会在某个点或特定条件下耗尽此池。您的站点的实际可用端口是49888还是selenium正试图在此设置某种控制?您对localhost与public hostname的使用有影响吗?@SimonOpelt 49888是selenium用于连接驱动程序的端口,据我所知。任何解决方案都是可以接受的,我对端口号49888不感兴趣:)请解释原因?使用使用可能会更好。谢谢你的回答,但我不认为这是我们遇到的问题。
HttpWebResponse response = null;
try {
var webReq = WebRequest.CreateHttp(url);
webReq.Method = "GET";
response = (HttpWebResponse)webReq.GetResponse();
}
finally {
if (response != null) response.Close();
}