首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >API调用在本地成功,但在网站发布后,即使在使用WebProxy之后也会失败。

API调用在本地成功,但在网站发布后,即使在使用WebProxy之后也会失败。
EN

Stack Overflow用户
提问于 2018-01-10 15:25:31
回答 1查看 449关注 0票数 0

我有一个网站的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()

我使用该资源的代码如下:

代码语言:javascript
复制
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文档的链接。提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2018-01-12 18:51:01

我建议在云中创建一个虚拟机,并将其托管在那里。我对GoDaddy也有同样的问题,所以我搬到Azure虚拟机。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48190704

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档