c# - WebClient、httpWebRequest 和外部 zabbix .exe 无法连接到网盘
问题描述
因此,前几天我将 Windows 10 从 1709 升级到 1803 后,我的 .NET Core 2.0 控制台应用程序出现了一个奇怪的问题。我知道我可以降级,但我宁愿看到问题得到解决而不是推迟。
让我试着解释一下情况,请注意英语不是我的母语,所以会出现语法错误。我有一个实习,我们有一个包含多个客户的列表,他们的最后备份日期以及是否成功等。这个应用程序的信息,我的应用程序,直接来自我们其中一台服务器上的 Zabbix 应用程序。在信息通过电子邮件发送给我的同事之前,甚至在 Zabbix 被调用之前,我从另一台服务器获取了一些信息,AhSay 6 和 7 服务器都在运行。该信息正在发送到 Zabbix。所以:Ahsay 6 和 7 -> Zabbix -> 电子邮件。问题来了:在我的 C:\ 磁盘和负责运行应用程序的服务器上,它工作正常,但是因为我的公司不使用 git(不是很奇怪吗?)我在一个外部的,网络连接,磁盘(位于 H:\ )。我还有一个备份磁盘,位于 D:\ 。在我的 D 盘和 H 盘上,应用程序都给出了多个错误,说 httpWebRequest、WebClient 等没有正确的参数。此外,来自 Zabbix 的外部 .exe,Zabbix_sender.exe 无法连接。再次:这在另一台服务器上运行良好,并且在同一台计算机上但使用本地 C 盘。
所以我的问题是:Windows 10 升级是否有可能搞砸了我的应用程序,或者我做错了什么。
我会应要求给你代码。但由于公司法规等原因,这必须经过精心编辑,我正在努力。
快乐的编码和提前感谢,
塔哈·杰姆尼
编辑,根据要求给出一些错误代码: 从 AhSay 获取用户列表的代码,给出的错误代码(在日志文件中):
System.Net.WebException: An error occurred while sending the request. Er is een ongeldig argument opgegeven ---> System.Net.Http.HttpRequestException: An error occurred while sending the request. ---> System.Net.Http.WinHttpException: Er is een ongeldig argument opgegeven
at System.Net.Http.WinHttpHandler.ThrowOnInvalidHandle(SafeWinHttpHandle handle)
at System.Net.Http.WinHttpHandler.EnsureSessionHandleExists(WinHttpRequestState state)
at System.Net.Http.WinHttpHandler.<StartRequest>d__105.MoveNext()
--- End of inner exception stack trace ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.ConfiguredTaskAwaitable1.ConfiguredTaskAwaiter.GetResult()
at System.Net.Http.HttpClient.<FinishSendAsyncUnbuffered>d__59.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.ConfiguredTaskAwaitable1.ConfiguredTaskAwaiter.GetResult()
at System.Net.HttpWebRequest.<SendRequest>d__194.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
at System.Net.HttpWebRequest.GetResponse()
--- End of inner exception stack trace ---
at System.Net.HttpWebRequest.GetResponse()
at System.Net.WebClient.GetWebResponse(WebRequest request)
at System.Net.WebClient.DownloadBits(WebRequest request, Stream writeStream)
at System.Net.WebClient.UploadBits(WebRequest request, Stream readStream, Byte[] buffer, Int32 chunkSize, Byte[] header, Byte[] footer)
at System.Net.WebClient.UploadValues(Uri address, String method, NameValueCollection data)
at System.Net.WebClient.UploadValues(String address, String method, NameValueCollection data)
at zabbixMailer.sender.GetInfo.ListUsers() in H:\source\zabbixMailer\zabbixMailer\sender\GetInfo.cs:line 212
带代码:
public static dynamic ListUsers()
{
Logger log = new Logger("log.txt");
try
{
string URL = "example.org";
string method = "POST";
var SysUser = "user";
var SysPwd = "password"; //URL AND PASSWORD/USER CHANGED! NOT REAL ONES!
NameValueCollection sys = new NameValueCollection
{
{ "SysUser", SysUser },
{ "SysPwd", SysPwd },
{ "LoginNameOnly", "true" }
};
WebClient client = new WebClient();
byte[] _json = client.UploadValues(URL, method, sys);
string json = System.Text.Encoding.UTF8.GetString(_json);
dynamic info = JsonConvert.DeserializeObject(json);
return info;
}
catch(Exception e)
{
log.ErrorToFile(e.ToString());
log.TextToFile("Programma gesloten met code -1");
Environment.Exit(-1);
return null;
}
}
“Logger log = new Logger”来自一个自定义类,该类将某些错误记录到名为“Log.txt”的文件中。错误发生后, evirement.exit 被调用,所以它会在第一个错误(这个)被调用后立即退出。
再说一遍:我的 C 盘上不是这种情况,它运行得很好。
解决方案
推荐阅读
- node.js - 如何将 Promise.all 与 fs.unlink 回调一起使用?
- python - 使用python在Android手机上下载图片
- highcharts - 如何在 highcharts 中导出带有自定义 html 部分的图表?
- google-tag-manager - 多行的dataLayer是可能的吗?
- php - PHP while循环在发送后中断
- python - Python触发/模拟自定义浏览器协议
- r - 从 excel 电子表格在 R 中制作出版质量表
- javascript - 如何使用 JavaScript 获取设备的最准确 GPS 坐标?
- android - apollo-android 对 express-graphql 的请求总是导致 http 400
- r - 完成下一个专栏系列