我在asp.net MVC中有一个网站,它通过第三方API向用户发送短信。 当我在本地测试时,API按计划工作,但在我上传到网络后失败并出现以下错误。这是它抛出的错误:
"连接尝试失败,因为连接方没有 在一段时间后正确回应,或建立连接 失败,因为已连接的主机无法响应80.85.87.122:443"
最初我尝试使用HTTP GET访问API,然后使用XML切换到POST,后一种方法返回以下错误: 无法连接到
的远程服务器System.Net.HttpWebRequest.GetRequestStream(TransportContext& context) 在System.Net.HttpWebRequest.GetRequestStream()
我使用资源的代码如下:
private async Task SendSmsUsingXML()
{
WebRequest req = null;
WebResponse rsp = null;
try
{
string fileName = Server.MapPath("~/App_Data/MultiTexterSMSFormat.xml");
string uri = "https://www.multitexter.com/tools/xml/Sms.php";
req = WebRequest.Create(uri);
//req.Proxy = WebProxy.GetDefaultProxy(); // Enable if using proxy
req.Method = "POST"; // Post method
req.ContentType = "text/xml"; // content type
//req.Proxy = new WebProxy("202.79.27.50", 8080);
// Wrap the request stream with a text-based writer
StreamWriter writer = new StreamWriter(req.GetRequestStream());
// Write the XML text into the stream
writer.WriteLine(this.GetTextFromXMLFile(fileName));
writer.Close();
// Send the data to the webserver
rsp = req.GetResponse(); //I am getting error over here
StreamReader sr = new StreamReader(rsp.GetResponseStream());
string result = sr.ReadToEnd();
sr.Close();
Response.Write(result);
}
catch (WebException webEx)
{
Response.Write(webEx.Message.ToString());
Response.Write(webEx.StackTrace.ToString());
}
catch (Exception ex)
{
Response.Write(ex.Message.ToString());
Response.Write(ex.StackTrace.ToString());
}
finally
{
if (req != null) req.GetRequestStream().Close();
if (rsp != null) rsp.GetResponseStream().Close();
}
}
同样,这在本地工作但是一旦我发布到网上就失败了。 然后我联系了我的主人(www.1and1.com),因为所有的手指似乎都指出他们是问题所在。 他们的客户服务通知我,由于我的托管包(这是一个共享托管包)的限制,此请求被阻止,如果我升级专用,这将不再是一个问题服务器包。 这对我来说毫无意义,因为简单的API调用甚至是最基本的站点的一部分。 在进行了更多挖掘之后,我发现了一个post用户抱怨同一个托管公司存在相同问题。他的解决方案是使用代理服务器,导致1and1接受请求。 我上网,寻找一个免费的代理服务器和端口用于测试目的,我找到一个在本地工作,上传到现场网站,它仍然失败了这个错误:
无法连接到远程服务器 System.Net.HttpWebRequest.GetRequestStream(TransportContext& context) 在System.Net.HttpWebRequest.GetRequestStream()
在这一点上,我真的很有智慧,并真诚地感谢任何有关解决此问题的帮助和/或建议。 有关进一步参考,这是我尝试使用的SMS API文档的link。 提前谢谢。
答案 0 :(得分:2)
我建议在云中创建一个虚拟机并在那里托管它。我和GoDaddy有同样的问题所以我转移到了Azure虚拟机。