Hi,

The attached diff changes
class/System.Web/System.Web/HttpApplicationFactory.cs to allow
HttpRuntime.Close() to work correctly - decrementing the counter when
deleting/not checking for the counter when about to delete - and
class/System.Web/System.Web.Hosting/SimpleWorkerRequest.cs, to make
MapPath work correctly - the _App{Install,Virtual}Path variables were
being initialised wrongly.

A suggested ChangeLog entry is as follows:

2003-02-04  Tim Haynes <[EMAIL PROTECTED]>

        * HttpApplicationFactory.cs: fixed HttpRuntime.Close() to
        decrement instance counter

        * SimpleWorkerRequest.cs: changed the initialised values of
        _App{Install,Virtual}Path variables

Cheers,

~Tim
-- 
OpenLink Software
Tel: +44 (0) 20 8681 7701
Web: <http://www.openlinksw.com/>
Universal Data Access & Data Integration Technology Providers

Index: class/System.Web/System.Web/HttpApplicationFactory.cs
===================================================================
RCS file: /mono/mcs/class/System.Web/System.Web/HttpApplicationFactory.cs,v
retrieving revision 1.8
diff -b -B -u -r1.8 HttpApplicationFactory.cs
--- class/System.Web/System.Web/HttpApplicationFactory.cs       18 Dec 2002 02:17:16 
-0000      1.8
+++ class/System.Web/System.Web/HttpApplicationFactory.cs       3 Jan 2003 16:32:16 
+-0000
@@ -189,9 +189,10 @@
                private void Dispose() {
                        ArrayList torelease = new ArrayList();
                        lock (_appFreePublicList) {
-                               do {
+                               while (_appFreePublicList.Count > 0) {
                                        torelease.Add(_appFreePublicList.Pop());
-                               } while (_appFreePublicList.Count > 0);
+                                       _appFreePublicInstances --;
+                               }
                        }
 
                        if (torelease.Count > 0) {
Index: class/System.Web/System.Web.Hosting/SimpleWorkerRequest.cs
===================================================================
RCS file: /mono/mcs/class/System.Web/System.Web.Hosting/SimpleWorkerRequest.cs,v
retrieving revision 1.5
diff -b -B -u -r1.5 SimpleWorkerRequest.cs
--- class/System.Web/System.Web.Hosting/SimpleWorkerRequest.cs  28 Sep 2002 07:44:14 
-0000      1.5
+++ class/System.Web/System.Web.Hosting/SimpleWorkerRequest.cs  3 Jan 2003 16:32:23 
+-0000
@@ -43,12 +43,12 @@
                        o = current.GetData (".hostingVirtualPath");
                        if (o == null)
                                throw new HttpException ("Cannot get 
.hostingVirtualPath");
-                       _AppInstallPath = o.ToString ();
+                       _AppVirtualPath = CheckAndAddVSlash (o.ToString ());
 
                        o = current.GetData (".hostingInstallDir");
                        if (o == null)
                                throw new HttpException ("Cannot get 
.hostingInstallDir");
-                       _AppVirtualPath = CheckAndAddSlash (o.ToString ());
+                       _AppInstallPath = o.ToString ();
                        _Output = Output;
 
                        if (_AppPhysicalPath == null)
@@ -198,9 +198,9 @@
                        char sep = Path.DirectorySeparatorChar;
                        if (path.StartsWith(_AppVirtualPath)) {
                                if (sep == '/')
-                                       return sPath + path.Substring 
(_AppVirtualPath.Length);
+                                       return _AppPhysicalPath + path.Substring 
+(_AppVirtualPath.Length);
                                else
-                                       return sPath + path.Substring 
(_AppVirtualPath.Length).Replace ('/', '\\');
+                                       return _AppPhysicalPath + path.Substring 
+(_AppVirtualPath.Length).Replace ('/', sep);
                        }
 
                        return null;
@@ -239,6 +239,18 @@
 
                        if (!sPath.EndsWith ("" + Path.DirectorySeparatorChar))
                                return sPath + Path.DirectorySeparatorChar;
+
+                       return sPath;
+               }
+
+               // Creates a path string
+               private string CheckAndAddVSlash(string sPath)
+               {
+                       if (null == sPath)
+                               return null;
+
+                       if (!sPath.EndsWith ("/"))
+                               return sPath + "/";
 
                        return sPath;
                }

Reply via email to