Please do not reply to this email- if you want to comment on the bug, go to the URL shown below and enter your comments there.
Changed by [EMAIL PROTECTED] http://bugzilla.ximian.com/show_bug.cgi?id=78796 --- shadow/78796 2007-02-19 15:39:01.000000000 -0500 +++ shadow/78796.tmp.4054 2007-02-27 22:21:24.000000000 -0500 @@ -79,6 +79,64 @@ MS works w/o having to specify the app relative path to the codebehind for master pages. Thanks, Mike + +------- Additional Comments From [EMAIL PROTECTED] 2007-02-27 22:21 ------- +Ok, I have looked into this further, as I continue to migrate my site +from MS to Mono, and have a working start at the solution. + +For this example, the application root is "/". There is a master page +at /includes/master_pages/global.master. global.master references +"global.master.cs" for it's CodeFile (notice it is missing the path +information) in the masterpage declaration. + +Eventually the framework tries to lookup the location of this +global.master.cs file (TemplateParser.ProcessMainAttributes - near +line 514 in my version). 20 lines down it pulls out the "CodeFile" +attribute and then tries to find the source using +UrlUtils.Combine(BaseVirtualDir, src). In this scenario, +BaseVirutalDir = "~/includes/master_pages" and src = "global.master.cs". + +The current implementation of UrlUtils.Combine results in a value of: +"/global.master.cs" which is incorrect. + +The following is a diff illustrating the change I made, and can +validate that it works on the test provided above. This results in +the proper path to "/includes/master_pages/global.master.cs": + +Index: UrlUtils.cs +=================================================================== +--- UrlUtils.cs (revision 73455) ++++ UrlUtils.cs (working copy) +@@ -129,8 +129,14 @@ + return Canonic (basePath + slash + +relPath); + } + +- if (basePath == null || basePath == "" || +basePath [0] == '~') ++ if (basePath == null || basePath == "") ++ { + basePath = +HttpRuntime.AppDomainAppVirtualPath; ++ } ++ else if(basePath[0] == '~') ++ { ++ basePath = +HttpRuntime.AppDomainAppVirtualPath + basePath.Substring(1); ++ } + + if (basePath.Length <= 1) + basePath = String.Empty; + + +As I indicated above, this does work on my small test, and might +expect this to fix other related issues. I do not fully understand +all the scenarios this method needs to cover, so please enhance code +above accordingly. + + +Thanks, +Mike _______________________________________________ mono-bugs maillist - [email protected] http://lists.ximian.com/mailman/listinfo/mono-bugs
