首页 > 解决方案 > 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 盘上不是这种情况,它运行得很好。

标签: c#asp.net.netzabbix

解决方案


推荐阅读