Strange IIS behaviour where server responses are being cached - asp.net

We've a website running since 5 years ago with no problems. A few days ago, users called support, telling they were not able to log into the website. We restarted our servers and all started working properly.
Today we have a product description that was edited (and is correct in our database) but the website won't display the updated value, it keeps displaying the old one.
All these values are retrieved via AJAX and POST method. I was able to see in my chrome Network tab how the server was sending the old response (outdated product description).
I restarted the SQL server, restarted the IIS (from the play button in IIS manager). No luck.
After that I restarted a service called "IIS World Wide Web Publishing Service (W3SVC)" and after that, magically, all started working properly.
The only important change we did (afaik) to our server after all these years, which was done 1 month ago, was to enable the compression module for dynamic content.
Now, another user is telling us about another value not being updated after it was edited.
What's going on and why after we restart that process all starts working?

Related

Unable to browse localhost due to HSTS common_name_invalid

Last week I was able to build and run a locally-hosted .NET website without any problems. However, for the past couple of days I haven't been able to get around this error:
ERR_CERT_COMMON_NAME_INVALID
This error message appears in both Chrome and Firefox. Edge and IE will load the page but block all AJAX requests without explanation.
The website is configured as an application in IIS and uses a self-signed certificate (created in IIS).
I encounter the same problem with running a completely separate .NET website so I doubt it has anything to do with each website's individual configurations.
My colleagues are able to browse their locally-hosted versions of the same website using a self-signed certificate in the same browser versions as I have installed.
Please, can someone tell me what might have happened to my setup, why are browsers no longer accepting my certificate, and how to get back to a running localhost website?
I'm a PHP developer and to be able to work on my development environment with a certificate, I was able to do the same by finding the real SSL HTTPS/HTTP Certificate and deleting it.
The steps are :
In the address bar, type "chrome://net-internals/#hsts".
Type the domain name in the text field below "Delete domain".
Click the "Delete" button.
Type the domain name in the text field below "Query domain".
Click the "Query" button.
Your response should be "Not found".
You can find more information at : http://classically.me/blogs/how-clear-hsts-settings-major-browsers
Although this solution is not the best, Chrome currently does not have any good solution for the moment. I have escalated this situation with their support team to help improve user/developer experience.
You should redo these steps every time you go on the server that contains the main HTTPS Certificate with HSTS clause.

Session timeout after some seconds in Umbraco

I have created an site on Umbraco 7.1.6 it was working perfect in Visual studio 2012; when I deployed it to my hosting space I found a problem that it redirects me to login screen again and again just after some seconds. I have set keep user login to true and increased timeout but no improvement.
When I searched for that problem I found some links:
https://github.com/umbraco/Umbraco-CMS/compare/release-7.1.6...7.2.0
http://issues.umbraco.org/issue/U4-3845
https://github.com/Umbraco/Umbraco-CMS/commit/c936aaa51753862914591b753f7f2d7be7749cf7
First link provide me file but I do not know how to updated my current site.
In console I am getting an error.
GET http://example.com/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds 401 (Unauthorized) angular.min.js:106(anonymous function) angular.min.js:106o angular.min.js:102g angular.min.js:100i angular.min.js:79i angular.min.js:79(anonymous function) angular.min.js:80e.$eval angular.min.js:92e.$digest angular.min.js:90e.$apply angular.min.js:92safeApply umbraco.services.js:58(anonymous function) umbraco.services.js:6773(anonymous function) angular.min.js:108e angular.min.js:31(anonymous function)
I just experienced the exact same symptoms. A site ran just fine locally, using IIS Express, worked fine when deployed to Azure WebSites, but when I ran on a Windows Shared Hosting environment, the back office session would timeout somewhere between a couple seconds and a couple minutes.
I'd get a pop-up authentication window often but not always on the GetRemainingTimeoutSeconds url.
I filed a ticket, and the provider was able to replicate the issue. They said the site was running in full trust.
After enabling 32 bit application support - the issue is resolved.
Thanks to everyone, especially to #Morten Oc who commented.
It's properly something on the hosting. Have you tried other Umbraco installations on hosterpk? Also, try to set the login time (in webconfig) to 0.
I found out a solution that it was due to hosting environment (permissions), I deployed on client's hosting and it works perfectly.
Additionally if you do not have full trust hosting then it would not be able to maintain its session, you would have to configure session to managed in database.
For more info how to configure please refer to this post:
https://www.saotn.org/configure-sqlserver-sessionstate-for-umbraco/

ServiceStack google OpenID suddenly not logging in

Got a site still in dev that uses ServiceStack's Open ID implementation to sign in users. It's been working fine all this time, suddenly today morning Google's OpenID login started failing, Facebook still authenticates fine. No error is thrown, just redirects back to the default url with this appended to it:
#f=Unknown
On my localhost it works flawlessly, both Google and FB login ok, only in production does it fail. I have tried quite a lot:
Re-verified each and every file in my asp.net bin folder compared with local and production, no difference.
Re-routed the production domain name to my localhost (in the hosts file), in hopes to step through the creation of the session. No luck, still signs in flawlessly.
Connected via remote desktop to the server and tried logging in on it as localhost, fails. (yea, WTH?).
Is there a way I can get a log of what is going on as the authentication is happening? or does anyone have an idea of what could be the issue?
On a side note: I recently changed dns settings for the domain name and moved it to this new server, but that was around 3-4 days ago, and it's been working fine all this time, until today morning. Also noticed that a reverse DNS lookup on my IP resolves to a different domain, investigating that right now.
UPDATE
This issue reared it's ugly head again this morning. I'm not sure what could be causing it but I suspect windows automatic time synchronization to be somehow throwing things off. I'm turning it off and going to keep an eye on things to see if it returns. Also, this issue seems to throw my SSL settings into chaos, i have to manually reset IIS's SSL bindings in order for things to work, even WebDeply is affected. Very strange.
UPDATE 2
Issue happened again today. I'm now suspecting it's somehow related to IIS's web deploy feature cause it happened immediately after I published my site. Also now realised that I don't need to reboot, a simple iisreset seems to fix it. Will keep monitoring.
FINAL UPDATE
I finally found the culprit. Time. My virtual server was gaining time very fast and every few days it would be ahead of most other servers and so the authentication would fail. The limit seemed to be around 3-5minutes, within that range, the authentication works okay. More than that, it fails. To get around it, simply enable time syncing and it should not re-appear.
You can check your production server clock. The OpenID request synch with the internet time in order to validate the request. If the clock is off or it was off for a while just reboot and the problem will be solved.

Dev site creates session fine, production site doesn't

I have two sites running on the same server (IIS7 on Win2003).
Site A is my production site.
Site B is a development version of site A. Aside from connection strings in its web.config file, both sites are running the same code.
There are some session variables created in Session_OnStart in global.asax. I've noticed over the past couple weeks, Site A's session variables aren't being properly created. (These variables are used to populate a couple of dropdownlists) This causes the drop-downs not to auto-populate or other errors depending on the page the user is trying to hit.
Site B's session variables have been working correctly. When I hit Site B, the drop-downs populate as I expect.
The first thing I want to try is an IIS reset to see if this corrects the problem, but I'm wondering why my sessions wouldn't be created correctly if both sites are running the same code?
I figured out a solution but I'm still at a loss as to why this is happening.
I wound up coding defensively to handle the session variable I'm interested in not being properly initialized. When this happens I've got code that properly sets the variable. (In all the years I've been a .NET developer, this is the first time session has been an issue)
I can rule out most of the common causes - I know the session wasn't timing out, and I know no updates were made to web.config or any IIS settings (it's a production site, so nobody touches IIS without putting in a support ticket, and the only person who puts in support tickets for IIS is me).
This seemed to be a problem when users clicked on a particular link in the site. For some reason visiting this particular page caused the session variable to be lost. I'm at a loss to explain the why but at least I've got the code working and not throwing an exception anymore.

Changing IIS 6 Application Pools for a Web App Project

Following recent hardware problems, I attempted to switch a couple of our websites to use new, individual application pools. A test run on our staging server worked fine, and has had no visible negative consequences.
Unfortunately, trying the same operation on our live machine left one of our key applications struggling - my best guess is with some kind of mismatch in Session state. I could log in fine, but a few clicks later would be presented with a screen that was part login screen, but with all menus visible. This indicates to me that part of the system thinks the session had been lost (redirect to login page), but IIS itself had not lost the session (hence the menus showing on the master page).
I tried recycling all the Application Pools (new and old), and each website using IIS Manager. I also tried a single-space change to the web.config file, and a full release of the dll's. Still, I could intermittently use the system for a few clicks, do some useful stuff, then maybe find myself at a login screen again or similar. We have some logging and on some occasions I could see that the session was being timed-out after a couple of seconds, substantially less than the settings on the App-pool (default 20mins).
As soon as I switched the web site's app-pool back to the default, everything was ok again.
What have I missed? Any suggestions gratefully received!
EDIT:
Just thought... on the staging environment I did name the App-pool differently from the website name (e.g. Xxxx_Dev, Xxx_Test etc) but on live I just called it the same name as the website. Could this cause an issue?
do your various applications all use Forms Authentication? Have you specified unique path attributes in each form tag in the web.config under the Authentication tag?
OK. I think I've found the problem.
I was actually using an Application Pool that had been set up by someone else - of the expected name - but they had set it up with the Properties, Performance tab | Web Garden option to use 4 worker processes. I have now changed that to 1.
As the session state was being stored 'In Process' (the default), each time the connection hit a new thread it also essentially lost any stored session variables, as I now understand things.
Its early days, but a simple switch to the newly altered Application Pool (no restarts or web.config saves necessary thus far) and everything appears to be behaving normally.

Resources