I know you've been asked this type of question a million times (pretty sure I've read all of them on the forum)... but I've got another one for you:
We are trying to use NeatUpload through a "sticky" load balancer, and our popup progress bar pops up, but the progress bar doesn't advance. The transfer/upload does happen in the background, so from what I can understand it's just the progress bar having the issue.
Here's our web.config related info:
What is your sessionState mode? Assuming it is neither InProc or Off, the problem is probably that the servers can't connect to the cluster using the name that the user's browser uses. Can you check that by trying to use a browser on one of the servers to access your app using the same URL that a user would use? If that fails, then I have a fix in the soon to be released 1.3.13 that will allow you to specify an absolute URL (with hostname, etc) for the handlerUrl attribute of the <add> element used to add a SessionBasedUploadStateStoreProvider.
Alternatively, if your load balancer is truly sticky, you might be able to work around the problem by using the InProcUploadStateStoreProvider as described in Reducing Server Load.
Thanks Dean. From what I gather, I think a lot of your response may depend on whether or not the sessionState is InProc... and it is in fact InProc. Does this mean I have to wait for 1.3.13? I admittedly have not tried your suggestions yet, I wanted to make sure I first know what you're talking about. As for the InProcUploadStateStoreProvider, that also seems like it only works if our sessionState is not InProc. Is this true?
If the stickiness is based on cookies and you use InProc session state, files uploade with MultiFile with useFlashIfAvailable=true will not update progress. Would that explain the problem? If so, either set useFlashIfAvailable=false or use either StateServer or SqlServer sessionState mode.
Unfortunately, no. Not using MultiFile, and don't have any explicit "useFlash" settings specified. Yes, the stickiness is based on cookies, using InProc session state. Based on those 2 things, what is the best setup for me? Waiting for 1.3.13?
From what you are saying, it doesn't sound like the issue is caused by using a web farm. If you copy the Demo.aspx and Demo.aspx.cs files from NeatUpload-version/dotnet/app/Brettle.Web.NeatUpload/ into your deployed web app directory on the server farm and use Demo.aspx to upload, does the progress bar work?
Ok, I've essentially reset all my settings, and am now hitting a different problem. Here's the background:
- IIS7 running in "Classic Mode"
- Trying to run the Demo.aspx file with this directory structure:
Here are the contents for the NUDemo/web.config:
section name="neatUpload" allowLocation="true" type="Brettle.Web.NeatUpload.ConfigSectionHandler, Brettle.Web.NeatUpload"
compilation defaultLanguage="vb" debug="true" strict="true"
neatUpload xmlns="http://www.brettle.com/neatupload/config/2008" useHttpModule="true" maxRequestLength="2097151" maxNormalRequestLength="4096"
The problem is that big files (don't have a solid size yet, but a 2.3mb file works and a 37mb file does not) make the upload "die"... the page just crashes out in the browser. I originally thought it was a maxRequestLength issue, but as you can see, that property is included in the neatUpload element.
Is there something I'm missing?
Ok, I've narrowed it down to where I'm only having issues on IIS7, and a big file (41mb). I tried a 15mb file, and was able to successfully upload it, but the 41mb file just hung the progress bar.
The only real difference between my IIS6 server and my IIS7 server is that NeatUpload is in the GAC on IIS6, but not IIS7. The web.config for both servers are exactly the same, and the page which uploads files is also exactly the same. This leads me to believe it's a server configuration issue, but I have no idea what it could be.
There is probably a firewall or something on the server that is blocking large requests. If you set useHttpModule="false" do big uploads still fail? If so, it probably isn't related to NeatUpload. You can be absolutely certain by removing the UploadHttpModule and trying to upload to a standard asp.net FileUpload or HtmlInputFile control.
BTW, is the progress bar working for the smaller uploads?
Thanks for pointing me in the right direction Dean... I found the culprit. In a nutshell, IIS7 has a default cap on upload filesize, but you can easily change it by adding a setting to your web.config file. See the article for the details.
Interesting. I didn't realize that setting had an effect if you used the Classic app pool, and I thought the default was 300MB. Thanks for the info, I'll update the NeatUpload installation step that mentions that setting to reflect this.