2007-11-02 Marek Habersack <mhabersack@novell.com>
+ * HttpRuntime.cs: BinDirectory returns a full path to the actual
+ bin directory in the application root. If no bin directory is
+ found, it defaults to returning <applicationPath>/bin. Fixes bug
+ 338116.
+
* HttpApplication.cs: introduced HTTP handler cache to save time
on repetitive handler collection traversals. On busy sites the
traversal of the default 26 handlers may account for thousands of
}
}
#endregion
-
+
+ static string _actual_bin_directory;
public static string BinDirectory {
get {
- string dirname = AppDomain.CurrentDomain.SetupInformation.PrivateBinPath;
+ if (_actual_bin_directory == null) {
+ string[] parts = AppDomain.CurrentDomain.SetupInformation.PrivateBinPath.Split (';');
+ string mypath = AppDomainAppPath;
+ string tmp;
+
+ foreach (string p in parts) {
+ tmp = Path.Combine (mypath, p);
+ if (Directory.Exists (tmp)) {
+ _actual_bin_directory = tmp;
+ break;
+ }
+ }
+
+ if (_actual_bin_directory == null)
+ _actual_bin_directory = Path.Combine (mypath, "bin");
+ }
+
if (SecurityManager.SecurityEnabled) {
- new FileIOPermission (FileIOPermissionAccess.PathDiscovery, dirname).Demand ();
+ new FileIOPermission (FileIOPermissionAccess.PathDiscovery, _actual_bin_directory).Demand ();
}
- return dirname;
+ return _actual_bin_directory;
}
}