http://bugzilla.novell.com/show_bug.cgi?id=575600
http://bugzilla.novell.com/show_bug.cgi?id=575600#c0 Summary: MapPath() does not work for virtual directories outside of the current application Classification: Mono Product: Mono: Class Libraries Version: 2.6.x Platform: 32bit OS/Version: openSUSE 11.2 Status: NEW Severity: Normal Priority: P5 - None Component: System AssignedTo: [email protected] ReportedBy: [email protected] QAContact: [email protected] Found By: --- Blocker: --- Created an attachment (id=339844) --> (http://bugzilla.novell.com/attachment.cgi?id=339844) VS2008 Testprojects User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.1.7) Gecko/20091221 Firefox/3.5.7 (.NET CLR 3.5.30729) MapPath() does not work for virtual directories outside of the current application. However, this works perfectly using WinXP and the integrated IIS. Reproducible: Always Steps to Reproduce: To reproduce this bug I created two simple WebApplications using VS2008. /WebApplication1 tries to access /WebApplication2 and read back some application settings. To do this drag a Label from the toolbox to WebApplication1 and add the following to the code behind class for WebApplication1: protected void Page_Load(object sender, EventArgs e) protected void Page_Load(object sender, EventArgs e) { Label1.Text="Server.MapPath(\"/WebApplication1\"): "; try { Label1.Text += "<b>" + Server.MapPath("/WebApplication1") + "</b>"; } catch { Label1.Text+="ERROR"; } Label1.Text+="<br/>HostingEnvironment.MapPath(\"/WebApplication1\"): "; try { Label1.Text += "<b>" + HostingEnvironment.MapPath("/WebApplication1") + "</b>"; } catch { Label1.Text+="ERROR"; } Label1.Text += "<br/>Server.MapPath(\"/WebApplication2\"): "; try { Label1.Text += "<b>" + Server.MapPath("/WebApplication2") + "</b>"; } catch { Label1.Text += "ERROR"; } Label1.Text += "<br/>HostingEnvironment.MapPath(\"/WebApplication2\"): "; try { Label1.Text += "<b>" + HostingEnvironment.MapPath("/WebApplication2") + "</b>"; } catch { Label1.Text += "ERROR"; } string strPhysPath = Server.MapPath("/WebApplication2"); Configuration config = WebConfigurationManager.OpenWebConfiguration("/WebApplication2"); KeyValueConfigurationElement test = (KeyValueConfigurationElement)config.AppSettings.Settings["test"]; if (test != null) Label1.Text += "<br/>[test]=" + test.Value.ToString(); else Label1.Text += "<br/>[test]=null"; } In the Web.config for WebApplication2 add <appSettings> <add key="test" value="Hello World!"/> </appSettings> To deploy the applications on IIS do the following: 1. Delete all files within c:\inetpub\wwwroot and copy the output of both WebApplications from above to some other directory 2. Create two virtual directories in IIS for each WebApplication and call them WebApplication1 and WebApplication2 and map them to the directories from (3) 3. Start a browser and enter http://localhost/WebApplication1 To deploy the applications on the Mono 2.6.1 Live CD do the following: 1. Create a directory below your home dir and copy both WebApplications to it 2. Enter xsp2 –applications /WebApplication1:./WebApplication1,/WebApplication2:,/WebApplication2 3. Start a browser and enter http://localhost/WebApplication1 Actual Results: The output from the test under Mono 2.6.1 is as follows: “Server.MapPath("/WebApplication1"): /home/rupert/DemoTest/WebApplication1 HostingEnvironment.MapPath("/WebApplication1"): /home/rupert/DemoTest/WebApplication1 Server.MapPath("/WebApplication2"): /home/rupert/DemoTest/WebApplication1/WebApplication2 HostingEnvironment.MapPath("/WebApplication2"): /home/rupert/DemoTest/WebApplication1/WebApplication2 [test]=null“ Expected Results: The output from the test under IIS produces the following: Server.MapPath("/WebApplication1"): C:\Inetpub\temp\WebApplication1 HostingEnvironment.MapPath("/WebApplication1"): C:\Inetpub\temp\WebApplication1 Server.MapPath("/WebApplication2"): C:\Inetpub\temp\WebApplication2 HostingEnvironment.MapPath("/WebApplication2"): C:\Inetpub\temp\WebApplication2 [test]=Hello World! By the way, calling WebConfigrationManager.OpenWebConfiguration(“/WebApplication2”) from within WebApplication1 will throw an exception on Mono 2.6.1 but not on Windows/IIS. All in all, the following methods are not working as expected System.Web.HttpServerUtility.MapPath() System.Web.Hosting.HostingEnvironment.MapPath() System.Web.Configuration.WebConfigrationManager.OpenWebConfiguration() -- Configure bugmail: http://bugzilla.novell.com/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the QA contact for the bug. You are the assignee for the bug. _______________________________________________ mono-bugs maillist - [email protected] http://lists.ximian.com/mailman/listinfo/mono-bugs
