我有一个网站的asp.net MVC,发送短信给用户通过第三方API。当我在本地进行测试时,API按计划工作,但是当我上传到web上时,会出现以下错误而失败。这是它抛出的错误:
连接尝试失败是因为连接方在一段时间后没有正确响应,或建立连接失败是因为连接主机没有响应80.85.87.122:443
最初我试图使用HTTP访问API,然后使用XML切换到POST,后一种方法返回以下错误:无法连接到远程服务器
System.Net.HttpWebRequest.GetRequestStream(TransportContext&上下文) at 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调用甚至是最基本站点的一部分。在做了更多的调查之后,我发现了一个帖子,其中一个用户向同一家托管公司抱怨同样的问题。他的解决方案是使用代理服务器,导致1和1接受请求。我上网,为测试目的寻找一个免费的代理服务器和端口,我找到了一个在本地工作的代理服务器和端口,并将其上传到实时站点,但由于这个错误,它仍然失败了:
无法在System.Net.HttpWebRequest.GetRequestStream(TransportContext&上下文中连接到System.Net.HttpWebRequest.GetRequestStream()的远程服务器
在这一点上,我真的是束手无策,并真诚地感谢任何关于解决这一问题的帮助和/或建议。作为进一步的参考,这是我试图使用的SMS文档的链接。提前谢谢。
发布于 2018-01-12 18:51:01
我建议在云中创建一个虚拟机,并将其托管在那里。我对GoDaddy也有同样的问题,所以我搬到Azure虚拟机。
https://stackoverflow.com/questions/48190704
复制相似问题