VS 2010 - Handling File Not Found Exception From HttpHandler
Oct 27, 2011
I'm using a HttpHandler to intercept PDF file download requests and modify the PDF file. I'm stuck on what to do if the requested file doesn't exist on the webserver. If I handle the Exception and return an empty response, it gives the user a 0 byte file to download. If I ignore the Exception, then ASP.NET catches it and the user is redirected to my unfriendly customError page.
Create a asp.net mvc project with the default template and used bmc appsight to monitor the w3wp process ; so when ever an action is clicked an exception is occured in iiscore.dll here is the sample one which i got.
I have a file upload control on my page. The maximum request length set is 8 MB (maxRequestLength = 8192). I also have server validation that throws an error if the file is more than 4MB. The reason that its 8MB in the config is the leverage that's given to the user and also that the app can be tested.
If I upload a file that's 9MB, I get thrown an exception "Maximum request length exceeded.", which is fine and as expected.
But when I try to upload a file that's 1GB, it shows me a HTTP 404 - File not found. how can I get it throw me a maxRequestLength exception?
One of the current projects I'm working on is converting an existing Access front end to a web app for a SQL Database. I wasn't involved in the original design of the, formerly, Access db and front end. I have the project nearly complete except for one remaining task, which involved links to part datasheets for a particular part.
The current db has a table with 8 columns "File1" through "File8". For each datasheet created for the part one of these columns is populated with the UNC path to the file, "<Server><Department>Documents<filename>.pdf". The Documents folder currently has over 16000 files stored there. The Access front end has a series of textboxes with associated file save, file open, and delete buttons for each. I could do the same think in the webform where I need to allow access but it doesn't seem very clean.
I've thought about importing the documents to the SQL db then use a fileupload method to maintain them, which I've used in apps for new databases but that seems like a daunting task with the existing db.
Any way to use the existing file path data in the db and existing document folder to allow access to the documents and the user to manage them?
if i browse for a text file and displays it in the text box and trying to save it as the name provided above i am getting the error as Directory Not Found Exception.
3. Data Access Layer to do the dealing with the database.
Now i have a Contacts page from where i can add a new contact to the database.So to add a New Contact i fill in all the required details and then call a Add Method (residing in the BLL) from the page, which in turn call a Add Method residing in the DAL.this method in the DAL returns the Current Identity of the record which is then return back to the BLL method and finally delivered on the page.this is fine. but what if a get an exception how do i handle it properly because the method in DAL has a return type of int and i dont want to throw another error!! coz other wise i will have to write try catch in almost all the methods.
//something like this public int AddMethod(ContactClass contactObj) { int result = 0;[code]...
rather i want to show the user a user-friendly message which they can easily understand and in the mean while i will send a mail to myself documenting the Error that just occurred.how can i implement my custom exception classes.
I had a look through some of the older questions, but I can't find anything.I have a Wildcard HttpHandler on my web app which is processing the url and working out if it can do anything with itIf it can't, then the StaticFile Handler should pick it up and just serve it as a static file (like an html file).The problem is, it's going through the Wildcard handler, then seemingly not going to the StaticFileHander. Is there something I need to do to the Wildcard handler, or in the web config?This is my web.config:
I am trying to pass an exception to an HttpHandler by doing the following:
catch (Exception e) { byte[] exceptionData; MemoryStream stream = new MemoryStream(); BinaryFormatter formatter = new BinaryFormatter(null, new StreamingContext(StreamingContextStates.Persistence)); formatter.Serialize(stream, e); exceptionData = stream.ToArray(); WebClient client = new WebClient(); Uri handler = new Uri(ApplicationUri, "TransferException.axd"); #if DEBUG ServicePointManager.ServerCertificateValidationCallback += new RemoteCertificateValidationCallback(BypassAllCertificateStuff); #endif try { client.UploadData(handler, exceptionData); } catch (WebException) { } }
EDIT
I am getting the following exception on the client.UploadData() line. "Content-Length or Chunked Encoding cannot be set for an operation that does not write data."
EDIT
Even if I change my call to be client.UploadString(location, "THIS IS A TEST!"); it still fails with the same exception.
public void ZipExtract(string zipfilename, string outputDirectory) { using (ZipFile zip = ZipFile.Read(zipfilename))//file not found exception { Directory.CreateDirectory(outputDirectory); zip.ExtractSelectedEntries("name=*.jpg,*.jpeg,*.png,*.gif,*.bmp", " ", outputDirectory, ExtractExistingFileAction.OverwriteSilently); } } [code]...
fileupload control doesnt allow to select multiple files, then what i did , i select a file of directory and by coding i got its directory path. and showing all files of that directory in checklistbox control.So now user can select multiple files and can send selected file. I know its not a proper way, but i am getting a control that can allow me to select multiple files, If you let me know about the control that will allow me to do that , then this is what my onlyOk come to my problem with fileupload control, it works fine when run locally. but at other location its giving me a exception of path is invalid and file not found and one more thing its looking for this location "Could not findfile 'c:windowssystem32inetsrv"
I created a simple data access layer in the dll and reference it in my web app. How can I point the error to the user that his code in this line has an exception. currently, when i input a nonexisting table it will popup an error "invalid object name table_name" and points the my code throw exception inside my dll. I want it to point out to the user code that uses my function that creates an error.
Line 92: Dim ds As DataSet = DAL.Dal.ExecuteDataset("SELECT * FROM table_nam", "DBConnectionString")
public static void Test() { try { OpenConnectionToDatabase(); //Opens a connection to Oracle DB } catch(Exception e) { e.Data.Add("Query:", command.CommandText); throw e; } }
When this code is executed when the Database server is being shutdown and the communication is disrupted, .NET throws the following error: Item has already been added. Key in dictionary: 'Query:' Key being added: 'Query:' at System.Collections.ListDictionaryInternal.Add(Object key, Object value) How can this be?
We are using renderaction provided by MVC futures. We've noticed that HttpExceptions in child action methods are not propagated to the parent action. Even though a fragment has failed, we still see the parent request resulting in a 200, and this throws our error handling for a toss.
I have a weird situation here. Using VS2010 and the MVC2 application template, I'm trying to set up error handling, but it refuses to work... Even with a simple controller throwing an exception in the index:
[Code]....
And <customErrors mode ="On"></customErrors> in the web.config file, MVC breaks into the code and tells me that "Exception was unhandled by user code". The default Error.aspx (static text only) is located in /Views/Shared, and I've even removed the login partial view from the master page.
I have a code which reads from a database and loads all feeds in it. Occassionaly I will get errors when the feeds are not responding. The error is happening on this line of code:
[Code]....
How do I add in a code that if the read above fails, ignore and proceed to next data row in the SQLDataReader ?
A first chance exception of type 'System.Threading.ThreadAbortException' occurred in mscorlib.dll An exception of type 'System.Threading.ThreadAbortException' occurred in mscorlib.dll but was not handled in user code
After banging my head because i could find where the exception came for and global.asax didn't get hit i found that it's from server.transfer and is a known bug. The alternative i read about is server.execute.However if i do this then the next page fires multiple javascript exceptions and a gridview i have is breaking of and the rows appear half at the left page corner and half inside the gridview!!
For now i just put a try catch on the server.transfer although the exception will not affect the application even if i don't use try catch. I also see that the exception is happening again even if i put try catch but with different dll: A first chance exception of type 'System.Threading.ThreadAbortException' occurred in App_Web_benglxq1.dll An exception of type 'System.Threading.ThreadAbortException' occurred in App_Web_benglxq1.dll but was not handled in user code Now what on earth is benglxq1.dll i don't know. What i know is that i'm leaving an exception to run and i don't like that. This is the js error when i use server.transfer btw: Microsoft JScript runtime error: Sys.ArgumentTypeException: Object of type 'Sys._Application' cannot be converted to type 'Sys._Application'.
I'm using ASP.NET Webforms and using stored procedures/ADO.NET for DataAccess. Now he does not want me to hard code validation in stored procedures nor in the code behind, but to catch the constraint exception message and look up the same error message in the database and look for the message that we want to show. I wonder if his design will work or should I explain to him that something is wrong here.