Hi I have a issue with the Response.WriteFile(string filename) in the HttpResponse, since I updated to 2.10.1. I use to add a full rooted path to this method, without problems, but if I do that now, it will add my application path to it. Looking at the code, I see there is a GetNormalizedFileName, which checks nicely if its a windows path or an unc path, but it wont check if its a unix path. I guess this is not preferred behavior for Linux systems.
This is what happens in my case: I call my download method with the following path: /home/willowmedia/wingsofdeath/wod_storage/55/1 and then on Response.WriteFile() I get this exception: [02-03-2011 11:48:25|7] ClientResponse.DownloadFile:Exception=Could not find file "/home/willowmedia/wingsofdeath/www/home/willowmedia/wingsofdeath/wod_storage/55/1". at System.IO.FileInfo.get_Length () [0x00000] in <filename unknown>:0 at (wrapper remoting-invoke-with-check) System.IO.FileInfo:get_Length () at System.Web.HttpResponse.WriteFile (System.String filename, Boolean readIntoMemory) [0x00000] in <filename unknown>:0 at System.Web.HttpResponse.WriteFile (System.String filename) [0x00000] in <filename unknown>:0 /home/willowmedia/wingsofdeath/www is my application path in this case. My solution is to check if the file exists in the normalize method: string GetNormalizedFileName (string fn) { if (String.IsNullOrEmpty (fn)) return fn; if (File.Exists(fn)) return fn; // On Linux we don't change \ to / since filenames with \ are valid. We also // don't remove drive: designator for the same reason. int len = fn.Length; if (len >= 3 && fn [1] == ':' && IsFileSystemDirSeparator (fn [2])) return Path.GetFullPath (fn); // drive-qualified absolute file path if (len >= 2 && IsFileSystemDirSeparator (fn [0]) && IsFileSystemDirSeparator (fn [1])) return Path.GetFullPath (fn); // UNC path HttpContext ctx = context ?? HttpContext.Current; HttpRequest req = ctx != null ? ctx.Request : null; if (req != null) return req.MapPath (fn); return fn; // Or should we rather throw? } But I'm not sure if that would be a solution for everyone. If I would want to report a bug on it, in which product should this be added? 'Mono: Class libraries'? Cheers Peter
_______________________________________________ Mono-list maillist - Mono-list@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-list