This project is read-only.
2

Resolved

External exception E0434F4D

description

Hi guys,
I'm using the plugin with Total Commander 6.54a.
I'm uploading gigabytes of photos and MOVs to the skydrive.
Whenever it uploads a bigger file than 10MB (mostly MOV files),
after uploading the file I get External exception E0434F4D (see attached screenshot), and I loose the connection with the skydrive and I have to kill TC,
and restart it to continue.
To me, it looks like the TC does not iteract with Skydrive for too long time, and the connection session expires, so when it finishes uploading the file and tries to upload the next, it find the session expired. But, that's only my guessing...
 
Otherwise, it works great, excelent work! This is the best solution for the skydrive known to me.
 
Cheers!
Bojan

file attachments

comments

ghollosy wrote Jun 25, 2010 at 3:23 PM

Hi Bojan, you findings are almost correct, except the it is not the session what expires, ... it is the lifetime of the SkyDrive plugin component. In a nutshel, to be able to write C# plugins for TC, I use DTools' solution, a proxy. This proxy executes the .NET plugin in a separated application domain, which -in the background- results in remoting, but DTools forgot to handle the .NET plugin lifecycle manually. So it is handled by the .Net framework. Therefore, if you upload a bigger file (its upload time is over 1-2 mins) or BTW, you do nothing for a while, there is no communication between the proxy and .net plugin, hence .Net framework believes it can be garbage collected and the pointer in the proxy becomes NULL. At the next communication, you'll receive an error.

I'd like to fix this issue, but the problem is in the proxy, which is written by DTools in C++.
So far, I could not even compile that project, nor fix it.

balazsy wrote Mar 2, 2011 at 3:48 PM

Hi guys!
There is a workaround for that without changing the DTools source by calling the System.Runtime.Remoting.RemotingConfiguration.Configure method in the plugin's (SkyDriveWfx) constructor which will change the lease time for the remoting.
The code should look like the following:
public SkyDriveWfx()
    {
        WebFolderRoot = new WebFolderInfo
        {
            Name = "ROOT",
            ContentType = WebFolderContentType.Documents,
            ShareType = WebFolderItemShareType.Private,
            PathUrl = RootWebFolderPathUrl
        };
        WebFolderLastListed = WebFolderRoot;
string config = System.IO.Path.Combine(
                System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location), "remotingConfig.xml");
            if (!System.IO.File.Exists(config))
            {
                using(System.IO.StreamWriter wr = System.IO.File.CreateText(config))
                    wr.Write("<configuration><system.runtime.remoting><application><lifetime leaseTime=\"30D\" sponsorshipTimeOut=\"30M\" renewOnCallTime=\"30M\" LeaseManagePollTime=\"30M\" /></application></system.runtime.remoting></configuration>");
            }
            System.Runtime.Remoting.RemotingConfiguration.Configure(config, false);
    }
It will create a remoting configuration xml file in the plugins directory (if not exists) with 30 days lease time and re-configure the remoting. I've tried the solution with my own plugin and it worked!

wrote May 13, 2011 at 9:49 AM

michalhainc wrote May 13, 2011 at 9:54 AM

This exception occured at my TC 7.5 under windows 7, uac enabled, running process as administrator, I have uploaded 3 jpegs to folder \\SkyDrive Explorer\foto\niko_06_02_2011\ (filesizes around 500kb), then did nothing for a while... (about 3-4 minutes) then from the same folder, downloaded one of the files back to my pc, then did again nothing for 3-4 minutes... then wanted to go one level up in the skydrive folder tree (..) and the exception popped up...

keep up good work guys

... Im also a C# developper... if ya need help... I can .. :)

ghollosy wrote Jul 27, 2011 at 12:21 PM

Hi Balazs, your workaround seems to be working, I just realized when I was playing this problem again recently, that the default configuration file is not there where it has to be normally, this is why your trick did not work for me for the first time. Anyway, thanks again for your hints.

wrote Feb 14, 2013 at 7:49 PM

wrote May 16, 2013 at 10:05 AM

wrote May 16, 2013 at 10:05 AM

wrote Jun 14, 2013 at 8:08 AM