小编Mar*_*sen的帖子

程序挂起在FtpWebResponse上

第一次海报,长期读者.我有一个非常烦人的问题,让我感到紧张.我已经设置了一个程序,所以我在FTP服务器上监听新文件,如果我下载了一个新文件.从那里我处理文件中的一些信息,等等.当我第二次运行我的序列时,我的问题出现了.也就是说,在我下载的第一个文件中,一切都很好,但是一旦检测到新文件并且我的程序尝试下载它,我的程序就会挂起.

 private static void DownloadFile(string s)
    {
        try
        {
            FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://blabla.com/"+s);
            request.Method = WebRequestMethods.Ftp.DownloadFile;
            request.Credentials = new NetworkCredential("xxx" ,"zzz");

            using (FtpWebResponse partResponse = (FtpWebResponse)request.GetResponse())
            {
                Stream partReader = partResponse.GetResponseStream();

                byte[] buffer = new byte[1024];
                FileInfo fi = new FileInfo(path);
                FileStream memStream = fi.Create();
                while (true)
                {
                    int bytesRead = partReader.Read(buffer, 0, buffer.Length - 1);
                    if (bytesRead == 0)
                        break;

                    memStream.Write(buffer, 0, bytesRead);
                }
                partResponse.Close();
                memStream.Close();
            }
            Console.WriteLine(DateTime.Now + " file downloaded");
            MoveFileToInProgress(s);
        }
        catch (Exception e)
        {
            Console.WriteLine(e.Message); …
Run Code Online (Sandbox Code Playgroud)

c# ftpwebresponse

6
推荐指数
1
解决办法
2820
查看次数

无法从程序集加载类型

在您说什么之前,我已经阅读了有关此问题的先前提出的问题.那里的答案并没有解决我的问题.

我想,如果你知道答案的话,这很简单.这是我的问题:

我有几个项目的解决方案,我正在创建一个基于插件的应用程序,我使用Reflection来加载所有程序集.这部分没问题,我加载了所有的程序集

        var filePaths = Directory.GetFiles(@"C:\CustomerServiceModule\", "*.dll", SearchOption.AllDirectories).Where(n => n.Contains("bin"));
        foreach (var f in filePaths)
        {
            Assembly.LoadFile(f);
        }
Run Code Online (Sandbox Code Playgroud)

现在我想创建一个类型的实例,所以我可以使用它:

            var assembly = AppDomain.CurrentDomain.GetAssemblies().Where(a => a.ManifestModule.Name == "Kayako.dll").SingleOrDefault();
            var name = assembly.GetTypes();
            var type = assembly.GetType("Kayako.KayakoData");
            var lol = Activator.CreateInstance(type);
Run Code Online (Sandbox Code Playgroud)

这很糟糕,因为在KayakoData中我有这个:

KayakoService _service = new KayakoService("xxx", "yyy", "zzz");
Run Code Online (Sandbox Code Playgroud)

这个服务是一个有效的程序集,我以前用过它.版本号很好,GAC中没有任何内容覆盖它,我看不到使用程序集绑定日志查看器的任何错误.我仍然收到此错误:

[System.LoadTypeException] {"无法从程序集'KayakoRestAPI,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null'加载类型'KayakoRestAPI.KayakoService'.":"KayakoRestAPI.KayakoService"}

有人有什么好主意吗?我一直盯着自己.如果我从KayakoData中删除服务部分,整个过程都有效,但我确实需要运行该服务.

.net c#

2
推荐指数
1
解决办法
2万
查看次数

标签 统计

c# ×2

.net ×1

ftpwebresponse ×1