How To Prevent AppDomain Recycles In IIS 7.0 When Deleting A Sub Directory
Jan 20, 2010
I have an asp.net web application that allows users to upload files to an 'uploads' directory that is located in the same virtual directory as the web app. Each uploaded file goes into a temporary sub directory that is named after the user's session id. Once I'm finished with the files, I delete the temp sub directory. The only problem is that when a sub directory is deleted, the AppDomain gets recycled and kills all user sessions (using inproc session state). The culprit appears to be a FileChangesMonitor that watches for changes in all sub directories in the application.
The following code works great in IIS 6.0 running on Windows Server 2003 to disable the FileChangesMonitor for sub directories, but for some reason it's not working in IIS 7.0 on Windows Server 2008:
System.Reflection.PropertyInfo p = typeof(System.Web.HttpRuntime).GetProperty("FileChangesMonitor", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Static);
object o = p.GetValue(null, null);
System.Reflection.FieldInfo f = o.GetType().GetField("_dirMonSubdirs", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.IgnoreCase);
object monitor = f.GetValue(o);
System.Reflection.MethodInfo m = monitor.GetType().GetMethod("StopMonitoring", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic);
m.Invoke(monitor, new object[] { });
I found another solution that disables the FileChangesMonitor altogether here. But this is not the ideal solution as I still want to monitor all other files except for the temp sub directories in the 'uploads' directory. Why does this work in IIS 6.0 and not in IIS 7.0? In IIS 7.0 can you specify sub directories in a virtual folder you want to disable recycling on? Is there another way to do this without using reflection?
View 2 Replies
Similar Messages:
Aug 4, 2010
I have a parent web application, called Parent, and a second web application called Child. Child is a virtual directory in IIS7 under Parent which is an application in IIS. Child is not a child directory of parent in the file system, only in IIS as a virtual directory. On application loading (Application_Start in global.asax) in the parent web application i tell it to load the child web dlls from childs bin folder using Assembly.LoadFrom() loading it into the app domain of Parent. Then when i try to visit /Child/Default.aspx I get an error saying: Parser Error Parser Error Message: Could not load type 'Child._Default'. Now the Child.dll (the web dll containing childs code behind etc) is in the app domain of the parent application and i can successfully reflect it and its members from code behind in the Parent page Default.aspx.
Furthermore on the Child/Default.aspx if i change the Inherits="Child._Default" to Inherits="System.Web.UI.Page" and then in <% %> tags on the page enumerate the dlls in the app domain i can see Child.dll and reflect its members and invoke functions. One thing that works is changing CodeBehind to CodeFile in the page directive. Then the page parses correctly. However this only works when the websites are in uncompiled, non published form.
View 1 Replies
Oct 6, 2010
Deleting image from directory?
View 3 Replies
Jun 30, 2010
I have some code in my logout routine that deletes some temporary session files when the user logs out or when the session expires. Deleting these folders causes my web app to restart. It does not error out or throws an exception it just restarts!
View 1 Replies
Jan 21, 2011
I am writing an online interface that will allow a site owner to modify files and directories on the server.
I have gotten inconsistent performance out of System.IO.Directory.Delete(PathToDelete, true);. Sometimes it works great, sometimes it throws an error. My controller looks like this:
[code]....
View 2 Replies
Feb 26, 2010
COMPLETE NOOB, dont know anything.. I have a Virtual directory ~/ClubInfoFiles that i upload some files too using a uploader i made. I might want to change the uploader i made to be able to change to a subdirectory or something so i can upload all files into one folder but different subdirectorys. the uploader i would like to be able to have a dropdown menu of all the subdirectorys within "ClubInfoFiles" say i has subfolders : Minutes, Flight Plans, Maintence Records, etc... but i would also like a field to where i can create a new subdirectory and have it automaticly update the dropdown. i want to list those files in gridview and have a link to dowload/open and dellete the files. i have found some code that gets close but it uses Auto Generate columns. really i dont need all that jazz, just the Name, File extention, and hyperlink the file for download/view. i would like to be able to delete and possible upload using the gridview... is this to much for a noob?
[Code]....
[Code]....
[Code]....
View 3 Replies
Jan 13, 2011
I have a subdomain on which I have put up all the js code for my webiste to interact with another application. For eg: at code.example.com Whenever, the user types this address,code.example.com, all the contents of the directory are listed. How do I prevent this thing? I do not have nay index.html or index.aspx here.
View 1 Replies
Apr 7, 2010
I have directories in my website which require authentication.
But when i type the url with the directory name it lets me see the files but doesnt allow access as users need to login.
How can i stop users viewing files if they manually type directory name in?
View 5 Replies
Feb 24, 2011
If my application URL is this:
http://localhost:51422/MyApp/Pages/FormView.aspx
I want 2 things:
1- I don't want any people to delete "...../FormView.aspx" and go to this[URL] and browse the directory pages and folders names.
2- If anybody tired that, the application should redirect him to login page or home page.
View 5 Replies
May 11, 2010
i have a template field which shows a picture of a paper clip. Upon click it will open a file from a shared directory. It is a basic application for Expense Reimbursements in which users are allowed to upload scanned expense receipts. After the receipts are uploaded they can also be viewed by clicking on the paperclip icon. hile I want them to be able to save and open the files from the shared directory, I do not want them to know what the directory name is. I want to prevent them from viewing other user's expense receipts. Share name: \serverAExpenseReceipt$
[Code]....
definition of the template field above.
View 5 Replies
Apr 13, 2010
The architecture of the application is straight forward. There is a web application which maintain account holder data. This data is processed and the status of account holders is updated based on number of business rules. This process is initiated using a button on the page and is a long running process (say 15 mins). A component is developed to do this data processing which internally calls stored procedures. Most of the business rules are kept in stored procedure.
View 2 Replies
Sep 27, 2010
I have a repeater which binds a set of data. Within this repeater is a column with various controls for updating, deleting, etc. These are image buttons which fire an onclick event such as "DeleteRecord". All this does is fire a stored procedure, passing in the ID of the record to delete from the CommandArgument of the object.
This works wonderfully... except for one rather huge problem. Once you delete a record, if you refresh the page, the record where the first deleted record used to be gets deleted. For instance... if I have 4 records
1 Record1
2 Record2
3 Record3
4 Record4
and I delete record 2... The page reloads with (which is fine):
1 Record1
3 Record3
4 Record4
...if I then hit refresh...
1 Record1
4 Record4
I assume this is because the erroneously deleted object (record3) is now in the same hierarchical place as the old object used to be and .net therefore doesn't know the difference, the page refreshes and fires the onlick event, grabbing out the command argument of the new object and deletes based on the ID as obtained from the commandargument of the new object. This is obviously a huge problem, if a client did this it would destroy data erroneously and I'm at a loss here. Is there any way to stop this from happening? I'm not sure if there is a better way to go about doing things or not. If there isn't, I need some sort of way to tell the page not to execute the event or to cross reference the ID of the object that is intended for deletion against the object itself...
Code below for convenience...
EDIT Wrapped a LinkButton around it because I have some jquery code in here as well which stops the page execution to wait for user confirmation. Pressing "ok" continues page execution.
<asp:LinkButton ID="oDeleteLink" CssClass="oDeleteIcon" CommandName="Delete" CommandArgument='<%# Eval("iAccountID") %>' runat="server">
<asp:ImageButton ImageUrl="/files/system/icons/trash-steel-16.png" ToolTip="Delete This Account" AlternateText="Delete" ID="oDeleteIcon" runat="server" />
</asp:LinkButton>
protected void oAccounts_ItemCommand(Object Sender, RepeaterCommandEventArgs e) {
if (e.CommandName == "Delete") {
int ID = e.CommandArgument.ToString().Numeric();
db.SPs.SpDeleteAccount(ID).Execute();
UI.Confirm(uiBroadcast, "Account has been deleted", "300px");
BindAccounts();
}
}
View 2 Replies
Mar 4, 2010
Our application uses the Enterprise Library's PropertyProxyValidator class to validate user input (v4.1 - Oct 2008). On occassion, the code will raise an exception saying the source type cannot be found. This error persists until the application pools recycle at night, at which point everything works again. It tends to only affect one of the web front ends at a time (there are two). I tracked down where the exception was being raised, and this is the section of code:
[Code]....
(As you can see, the value for this.SourceTypeName is shown in the exception and I've checked that it matches exactly.)
We have never been able to reproduce this exception and at this point don't have any ideas left as far as causes. For a while, my suspicion was that it was related to the Temporary ASP.NET Files folder. The last time the error occurred, I copied that folder from both web front ends. Then the next day when things were back to normal, I copied the folders. When I did a directory and file comparision of the affected web front end, I found no differences.
Our application is essentially user controls hosted in web parts on SharePoint (they don't do anything with SharePoint - in fact, for a while, we were developing the controls on ASPX pages). There are two servers in the farm, both with Windows Server 2003 R2 Standard x64, IIS 6, and .NET v3.5. This issue doesn't strike me as a problem with Enterprise Library or SharePoint, hence why I've posted here, but more so with assembly loading.
Any ideas for causes would be greatly appreciated. I could also use suggestions on tools I could use to try and debug this when happens again (it happens 2-3 times a month) in production.
View 11 Replies
Jul 8, 2010
This is a really odd situation, so hopefully I can explain it well enough.
I am deploying an ASP.NET 4 webforms application to a Windows Server 2003 SP2 server running IIS6.
Here's the problem -- when the application pool recycles its worker process (w3wp.exe), about 80% of the time, I will get an ReflectionTypeLoadException error trying to access any page in the app that contains an EntityDataSoure every time I try to view it.
However (this is the interesting part) -- the other 20%, it works just fine. I've actually resorted to turning off recycling the worker process entirely for this application pool and just add/remove whitespace from web.config forcing the site to recompile until I get a "good" w3wp.exe.
If this isn't clear, what I'm saying is: the actual worker process doesn't work at all for pages containing an EntityDataSource for about 4/5 times it starts, but still manages to serve all other pages just fine. Once you get a worker process that manages to serve a page with an EntityDataSource, it works every time until that process gets recycled.
My question is, how can I debug this? It works fine on my dev machine, it works fine on the server as long as you get a good process running, but iisreset or a server restart or anything that kills the worker process is almost guaranteed to cause the site to not come back up and throw this ReflectionTypeLoadException.
[Code].....
View 3 Replies
Sep 26, 2010
What is this Error For? I repaired my Vs but this did not solve it.
My OS : Windows 7 64 bit home edition. Visual studio 2010 Ultimate. Does My question need more information?
View 3 Replies
Dec 22, 2010
I am writing a plugin architecture. My plugin dlls are located in a sub directory from where the plugin manager is running. I am loading the plugins into a separate AppDomain as the following:
string subDir;//initialized to the path of the module's directory.
AppDomainSetup setup = new AppDomainSetup();
setup.PrivateBinPath = subDir;
setup.ApplicationBase = subDir;
AppDomain newDomain= AppDomain.CreateDomain(subDir, null, setup);
byte[] file = File.ReadAllBytes(dllPath);//dll path is a dll inside subDir
newDomain.Load(file);
However. newDomain.Load returns an assembly which the currently domain attempts to load. Because the plugin dlls are in a sub directory, the current domain cannot and should not see these dlls and the current domain throws a FileLoadException"ex = {"Could not load file or assembly ... or one of its dependencies."
The question is, can we load an assembly into a separate AppDomain without it returning the loaded assembly?
I know I can add a handler for the AssemblyResolve event in the current domain and return a null, but I would prefer to not to go this route.
View 1 Replies
Feb 4, 2011
It's my understanding that if you want to use the WCF-Ninject extension, it assumes that you are hosting your WCF services in their own AppDomain.
I'm already using the Ninject.Web extension and asp.net compatibility mode to get at the Membership Provider and Session.
Is there a way utilize my Ninject with my WCF services that are hosted in the same AppDomain as my Web Application?
View 1 Replies
Oct 30, 2010
In my ASP.NET app, I'm attempting to add another directory to be have the DLLs in it shadow copied.
The only method I found that will allow m to do this is AppDomain.CurrentDomain.SetShadowCopyPath.
However, this method is marked as Obsolete. MSDN has this to say about it
SetShadowCopyPath(String path) Message: AppDomain.SetShadowCopyPath has been deprecated. investigate the use of AppDomainSetup.ShadowCopyDirectories instead.
However, the AppDomainSetup.ShadowCopyDirectories property doesn't seem to change whenever I set a value to it.
AppDomain.CurrentDomain.SetupInformation.ShadowCopyDirectories = "mydirectory;bin"; string test = AppDomain.CurrentDomain.SetupInformation.ShadowCopyDirectories; // returns bin, which was the original directory
Is there a reason that it won't change and is there a work around?
View 1 Replies
Feb 3, 2010
I would like to reset/clear an item in the Cache, but without resetting the application or writing a specialized page just for this. ie, a non-programmatic solution.
View 3 Replies
Jul 30, 2010
Maxima.exe is a Computer Algebra System built as a native code rather than a managed code. MyService works as a socket server, it will instantiate a new process of Maxima for each browser submitting mathematics expression to Web Server. I cannot use AppDomain here because Maxima is a native code. However I want security policies provided by AppDomain such as restriction to write data on file system.My question is, how can I get the AppDomain-like security policies when I instantiate Maxima in a process rather than in an AppDomain?
View 1 Replies
Apr 30, 2010
How does one control the application recycle settings for an ASP.NET application runnin on mod_mono & Apache ?
On IIS6 & 7 there was an option to specify either a time period, a number of requests, etc. when the AppDomain would be recycled and the application would basically do an Application_End() / Application_Start().
I am seeing the same behaviour on mod_mono & Apache ,but I can't find where to change the settings.
View 2 Replies
Mar 2, 2011
I am creating a sandbox AppDomain so I can load up an assembly and release it.
var sandbox = AppDomain.CreateDomain("Sandbox", null,
AppDomain.CurrentDomain.SetupInformation);
However when I Load an assembly into to sandbox, the debugger crashes. I am in ASP.NET.
var assemblyName = AssemblyName.GetAssemblyName(assemblyPath);
var assembly = pluginDomain.Load(assemblyName); // crash here
View 1 Replies
Jul 7, 2010
we are experiencing big difficulties in the configuration of ASP.Net state service and II7. The service seems not working correctly because when the application pools recycles the applicatio loose the session.If we try the same configuration in IIS6 it works correcly.What is the correct way to configure the aspnet session state service in iis7?
View 2 Replies
Mar 4, 2010
I'm trying to develop a web application that dispatch (Dispatcher) to multiple versions of another webapp on a per-request basis. To to that end, I'm using ApplicationManager.CreateObject to create new AppDomains running the web app in question, but the new app domains seem to be failing to load the Dispatcher's DLL (and I'm copying the DLL over to the web app's bin directory, so I'm pretty sure it's there).
[code]....
The Appbase seems to be pointing at the root of the development server, rather than the path passed in to ApplicationManager.CreateObject and it only seems to be searching directories under the development server which seems strange. how to make the new AppDomain search for the DLL in the web app's root rather than under the development server?
View 1 Replies
Jun 18, 2010
I have developed website using .NET 2.0 and I am trying to host the same on IIS 5.1. It works on my machine where I am domain user with all the administrator rights on my machine. I can access the website from other machine on the network using IP address of my machine in URL
But it fails when I am trying to host on my clients machine. Here is the list of errors I get.
I already tried using
1. iisreset
2. aspnet_iis -i
Here is the list of the errors that I get
[Code]....
View 2 Replies