First of all, thanks for all the work you've put into this component. I am having a problem that I have not been able to find a solution for in the forums. My web application requires SSL and I have found that if I do not use the InProcUploadStateStoreProvider, exceptions are thrown on the server (workstation works fine). This wouldn't be a problem, however when I use this stateprovider, the progress bar no longer updates or functions (it is visible).
My app runs on a Windows 2008 server in IIS7 with a signed SSL cert. The app is configured to use the ASP state server for session data (not InProc). I have configured NeatUpload to run only on a per location basis and have added the appropriate HTTPUpload module to the web.config (in both places). I have also tried using the SessionBasedUploadStateStoreProvider which throws the same exception as the default provider.
Any idea why the progress bar does not update when using the InProcUploadStateProvider?
P.S. Here is the configuration section from my web.config...
Thanks for any help that can be provided...
FYI, here is the exception using the default state provider...
System.Net.WebException: Unable to connect to the remote server ---> System.Net.Sockets.SocketException: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond 126.96.36.199:443
at System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress)
at System.Net.Sockets.Socket.InternalConnect(EndPoint remoteEP)
at System.Net.ServicePoint.ConnectSocketInternal(Boolean connectFailure, Socket s4, Socket s6, Socket& socket, IPAddress& address, ConnectSocketState state, IAsyncResult asyncResult, Int32 timeout, Exception& exception)
--- End of inner exception stack trace ---
at System.Net.WebClient.UploadValues(Uri address, String method, NameValueCollection data)
at System.Net.WebClient.UploadValues(String address, NameValueCollection data)
at Brettle.Web.NeatUpload.SimpleWebRemoting.MakeRemoteCall(Uri uri, HttpCookieCollection httpCookies, Byte encryptionKey, Byte validationKey, String encryptionAlgorithm, String validationAlgorithm, Object methodCall)
at Brettle.Web.NeatUpload.SimpleWebRemoting.MakeRemoteCall(Uri uri, Object methodCall)
at Brettle.Web.NeatUpload.SessionBasedUploadStateStoreProvider.MakeRemoteCall(Object methodCall)
at Brettle.Web.NeatUpload.SessionBasedUploadStateStoreProvider.Load(String postBackID)
at Brettle.Web.NeatUpload.UploadStateStore.OpenReadWrite(String postBackID)
at Brettle.Web.NeatUpload.UploadStateStore.OpenReadWriteOrCreate(String postBackID)
at Brettle.Web.NeatUpload.UploadHttpModule.Application_ResolveRequestCache(Object sender, EventArgs e)
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
The progress bar will not update properly if you use the InProcUploadStateStoreProvider on a web farm or web garden. I suspect you are using one of those.
The exception you are seeing with the default and the SessionBasedUploadStateStoreProviders indicates that the server is having difficulty connecting to port 443 at 188.8.131.52. That is most likely a firewall issue. Some firewalls are set up so that a server can't connect to itself using it's external IP address. You can check that by running a browser on the server and trying to connect to https://184.108.40.206/path/to/your/app/NeatUpload/UploadStateStoreHandler.ashx. If there are no firewall problems, you will get an error from the application, not a connection error from the browser.
Thanks for your help Dean. Unfortuantly...
1.) I am not running a web farm or web garden (my max worker process is set to 1 for this app pool). The webserver is dual core. Any ideas?
2.) It must be my hosting provider's firewall blocking the SSL request. I have disabled the Windows firewall and still no luck. I'll email the firewall guy.
Just got word back from our hosting provider..."You cannot access the external IP address of a host if it is being translated to itself on a directly connected firewall." Basically all communications tn our external IP address are blocked from the server itself. It can oly communicate to itself on local IP addresses. Any configuration changes I can make to NeatUpload to allow functionality?
I've got it working (don't you hate it when posters answer their own questions). I added our website domain name to the server's hosts file and pointed it to the internal IP of the server. It was a long shot, but it seemed to solve my problems. Hope other readers may find this simply solution helpful in similar situations.