Lukas,

I'm working on this issue, or at least an issue that generates the same exception. I do have a working patch, which I hope to contribute back after a little more work on it.

Check your API to see if you are making any calls to socket.makefile(). If you do, and subsequently close the fileobject (but not the socket object), the underlying .NET Socket will also get closed (and garbage collected), even though other objects are still referencing it. However, the Python socket will not be aware of this corrupt state, and subsequent socket operations will raise the exception.

Not sure why subsequent attempts work for you, other than that perhaps your API has error handling code that re-create the connection.

Hope this might be helpful.

Best Regards, Zack



On 6/10/2011 7:55 AM, Lukáš Duběda wrote:
Hi there,

I hope someone out there could help me out with this problem.

I have a API written in Python (CPython that is) that relies on
some of the CPython modules, such as ssl and httplib.

The problem is, when I call the API and its methods via IronPython
I get IOError: "System.IO.IOException: Unable to write data to the
transport connection: Cannot access a disposed object."

The weirdest thing is, if I make the call for the second time,
all goes through beautifully. Then again, thrid time errors out, but
fourth goes through just fine. And so on so forth.

Here's the exact script excerpt (with the thorough error output) at
pastebin: http://pastebin.com/TKbKDtPb

I call the sg.find_one() method the first time, which produces the
IOError. Then at the end of the error output, I call it again and
as you can see, it returns the correct object.

Please, could anyone tell me how to deal with this without rewriting
the given API to use .NET objects?

Thanks a lot in advance, cheers,

_______________________________________________
Users mailing list
Users@lists.ironpython.com
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com

Reply via email to