发送开发时发生意外错误,但未实时发生
Posted
技术标签:
【中文标题】发送开发时发生意外错误,但未实时发生【英文标题】:An unexpected error occurred on a send on development but not in live 【发布时间】:2018-07-10 10:03:21 【问题描述】:我有一个非常奇怪的错误,已经让我发疯了好几天。
我在我的 Visual Studio 开发环境中运行以下代码并收到错误“发送时发生意外错误”。编译代码并将其移动到没有Visual Studio的机器上,它工作正常
环境是 .Net 4.7.1,使用 Visual Studio 2015
public string Get(string resource)
string url = BuildResourceUrl(resource);
try
WebRequest req = WebRequest.Create(url);
req.Method = "GET";
req.ContentType = "application/json";
req.Headers.Add("X-Shopify-Access-Token", _apiPassword);
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
WebResponse response = req.GetResponse();
Stream dataStream = response.GetResponseStream();
StreamReader reader = new StreamReader(dataStream);
string responseFromServer = reader.ReadToEnd();
reader.Close();
dataStream.Close();
response.Close();
return responseFromServer;
catch (WebException ex)
string response;
using (var reader = new StreamReader(ex.Response.GetResponseStream()))
response = reader.ReadToEnd();
throw ex;
我已禁用所有防火墙和防病毒软件,但这没有任何区别。
帮助解决这个问题将是最appriciated
【问题讨论】:
你是从哪里得到这个消息的?在ex
或 response
中的 catch 块中
尝试在此答案中指定 TLS 选项:***.com/a/43992910/246342
调试这些问题的最佳方法是使用像wireshark或fiddler这样的嗅探器。比较好的结果和坏结果中的标题。在这种情况下,PC 中安装的浏览器很可能是不同的。您可能需要为内容类型添加标题。您可能还必须在网络浏览器中手动删除 cookie。开发系统中可能存在阻止代码运行的错误 cookie。
我在 ex 上收到此错误,我尝试将 SecurityProtocal 更改为 ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 |安全协议类型.Tls11 |安全协议类型.Tls;但这也不起作用
【参考方案1】:
经过多次挖掘和挫折,我找到了解决方案。即使使用 .Net 4.7.1 我仍然必须使用以下代码
public string Get(string resource)
string url = BuildResourceUrl(resource);
try
ServicePointManager.Expect100Continue = true;
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls;
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
WebRequest req = WebRequest.Create(url);
req.Method = "GET";
req.ContentType = "application/json";
req.Headers.Add("X-Shopify-Access-Token", _apiPassword);
WebResponse response = req.GetResponse();
Stream dataStream = response.GetResponseStream();
StreamReader reader = new StreamReader(dataStream);
string responseFromServer = reader.ReadToEnd();
reader.Close();
dataStream.Close();
response.Close();
return responseFromServer;
catch (WebException ex)
string response;
using (var reader = new StreamReader(ex.Response.GetResponseStream()))
response = reader.ReadToEnd();
throw ex;
这似乎是 Shopify 特有的问题,因为我在向其他提供商调用 API 时没有任何问题
【讨论】:
以上是关于发送开发时发生意外错误,但未实时发生的主要内容,如果未能解决你的问题,请参考以下文章
Cake.build 错误:“底层连接已关闭:发送时发生意外错误”
无法将 xml 发送到 Web 服务 - 基础连接已关闭。发送时发生意外错误