When you change a controller’s action method by adding a new parameter make sure that the parameter has a default value specified or is of Nullable type. Not doing so will render the action method unusable if called without the newly added parameter – the IIS will be returning 404 HTTP error code without throwing any other exception or error message rendering the debugging of this situation very hard.
Recently I had to decommission the first Exchange 2003 server in our company. Our exchange organization had 2 Exchange 2003 SP2 servers and 2 Administrative Groups (each server in a separate AG). When searching the internet for help in doing that I have found the following article – http://support.microsoft.com/kb/822931.
This article describes almost everything what you should do except the following:
- What to do with “schema-root”, “OWAScratch{GUID}” and “StoreEvents{GUID}” system folders.
- How to delete the first AG when removing the last server from it.
Ad. 1. It is best to rehome mentioned system folders to the other server as you did with the OAB folders and others, so their content is removed from the server being decommissioned but stays on the other one. This would be the best way to get rid of them from the “Public Folder store” of the retiring server.
This is in contrast to simply deleting the folders – I noticed that deleting these folders can lead to strange behavior: they structure is being regenerated by the Exchange after decommissioning the first server however they do not have a replica so they cannot be used. This is not preventing the public folders from working fine, however this causes errors when looking at them using “Exchange System Manager”. I do not know if this can lead to some other, serious problems but seeing an errors in ESM is not a good sign I think.
When there are no mailboxes and public folder instances left on the decommissioned server and other steps mentioned in Microsoft’s article are already done then you can remove the “Public Folder Store” and “Mailbox Store” from it.
Ad. 2 If you want to remove whole Administrative Group which will be empty after decommissioning the server, then before uninstalling the Microsoft Exchange from the server follow these steps:
- Move the “Public Folders” tree to the other AG if it exists in the current AG being removed.
- Remove all the connectors from the routing groups stored within this AG and all connectors from other routing groups in other AGs which were connected to the routing groups in the AG being removed.
- Uninstall the Microsoft Exchange from the server being decommissioned in this group.
- Remove all routing groups from the AG.
- Remove all containers from the AG.
- Remove the AG.
Steps 1,2,4,5,6 are best to be performed using ESM on other Exchange server (anyone which is not being decommisioned).
Recently I went into a very, very strange problem. I have a RAID5 disk array in my home PC based on SB8xx AMD controller. Recently I bought a brand new graphics card to my computer. After replacing my old one to my horror I noticed, that BIOS does not see any of my hard drives plugged into my built-in RAID controller on my ASUS motherboard. I was shocked, that replacing a video card can lead to such problems with my RAID (what the hell?). I would never suspect that I can lost my hard drives after replacing a video card…
Fortunately it was not as bad as I firstly thought. The raid was not seen by the BIOS itself, thats true, however the operating system did see my RAID array without any problems – like nothing happened. I only lost the boot availability from any hard drives which were connected to my RAID controller.
First thing I did was to change my system hard drive mode from RAID to IDE in system BIOS. That allowed me to boot my system and after that the system saw my RAID array without any problems. That was a relief, because I thought that I have lost my array together with the data contained within.
But that was no solution to me, because the system hard drive operating in IDE mode works noticeably slower and I did not buy an expensive video card to slow down my computer!
Then I started thinking what could have caused such strange behavior. I tried upgrading the BIOS but that did nothing. Then I recalled, that the system BIOS is mapping boot roms of hardware within a special memory, called a Conventional Memory which is always 640KB in size. So maybe the system BIOS has wrongly mapped the roms and not all of them fit into 640KB? And that was it! Disabling some built-in roms (in my case I disabled buil-in IDE BIOS ROM because I do not boot from IDE devices normally) did the trick – the system BIOS started to see my RAID array again. Uff.
So if anyone would ever go into similar problems after replacing a video card – to workaround the issue you will have to disable some unused built-in roms in BIOS setup to allow RAID BOOT ROM to fit into conventional memory and be seen by the system BIOS.
If you are using RAID feature of AMD SB8XX chipsets you can encounter a lot of BSODs when using Windows 8 even during system installation. This is caused by a buggy amdsbs.sys driver which is integrated into Windows 8 distribution media.
To be able to successfully install Windows 8 in such situation you must set SATA controller mode of system hard disk to IDE for the time of system installation. After the system is installed first thing to do is to install the newest RAID driver from AMD site and disable the buggy amdsbs.sys driver in the registry (without disabling it you will still sporadically encounter BSODs even though the newer and bug free driver from AMD is installed). To completely disable the buggy driver you have to perform the following steps:
- Open Registry Editor
- Navigate to the “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\amdsbs” key.
- In the right pane find “Start” parameter, double click it and set its value to 4.
- Close the Registry Editor and reboot the system.
After installing the newest RAID driver and disabling the buggy one, you can set back the SATA mode of your disks to RAID and the Windows will be working stable now.
When you install a php into IIS7 and try to execute phpinfo() script you can get an HTTP 500 Internal Server Error message. The most probably cause of this is that php-cgi.exe program is writing some text to stderr. By default IIS7 displays an HTTP 500 error message when it detects such behavior even, when the CGI displayed only a warning message on stderr. To avoid this problem you have to change default error handling for FastCGI in IIS7.
To do this follow the following steps:
- Start IIS Manager
- Click on <server name> and then in the right pane go to “FastCGI Settings”.
- Right click on php-cgi.exe file and choose “Edit…”.
- Set the “Standard error mode” option to “IgnoreAndReturn200” value.
- Click OK and close IIS Manager.
After performing mentioned steps you shall no longer see HTTP 500 error messages in the browser.
In most cases, when we replace the motherboard with or without a new processor in the computer the previously installed system will not boot – probably we will end with BSOD. After that most people will go and reinstall the previously installed operating system because they think there is no other option to resurrect the old one. Well, this is not true. Here I want to tell what steps (without getting to the very details) you must do to resurrect previously installed system.
But first let think why the old os cannot successfully boot on the new hardware. The problem lies in two places (or at least in one of them). First is the controller of the system disk – if the controller in the new motherboard comes from other vendor or is simply incompatible with the old controller (for examle the old one was Intel IDE and the new is VIA IDE), then the os does not have the right device driver for it and as the result it cannot access the hard drive during boot resulting in BSOD. The second lies in the processor architecture (but only if the new processor is from other vendor, for example the old one was from Intel and the new one comes from AMD).
To cope with the problem with device driver for disk controller you have to have a Live CD or bootable USB flash (with BartPE, VistaPE, etc.) in which you can access the system partition and the registry of the installed system. You will have then manually place the right driver for the new disk controller in the “%systemroot%\system32\drivers” folder and manually add or edit the registry to make the driver being loaded with the system (the drivers are being represented as services in the following registry key: HKLM\System\CurrentControlSet\Services).
When you will be fine with the driver for the hard disk controller, then you need to ensure that the IntelPPM service is disabled (in the registry the start value must be set to 4). Without disabling it, when the new processor comes not from Intel, you will end up with BSOD as well.
This is not a detailed explanation of what to do exactly but it shows the way you shall go if you don’t want to reinstall the whole operating system after changing your hardware like motherboard, disk controller or processor.
If you have to execute a bat file from other bat file, you normally use CALL command to achieve your goal. Everything works fine until you want to retrieve exit code of called bat file (the %ERRORLEVEL% environmental variable) when you executed the CALL command within IF clause. The problem is that that the %ERRORLEVEL% variable will not change its value after calling other bat file until we leave the IF clause!
So to sum up – always read %ERRORLEVEL% variable outside any IF clause. Not doing so will cause wrong exit code to be retrieved. This is very strange behavior which made me to spend all day searching what is wrong with my BAT files not working.
I recently faced strange problem with IE8 browser. The URL autocomplete feature suddenly stopped working. I searched the internet deeply to find the fix for this problem with completely no luck. Analyzing how the IE8 browser works I found, that it is looking for a COM object with class ID {80A3E9B0-A246-11D3-BB8C-0090272FA362} when trying to autocomplete URLs. I then googled for the library which contains the object with mentioned Class ID and found that it is “langwrbk.dll“. Having that in mind fixing the problem was as easy as executing one command:
regsvr32 langwrbk.dll
This worked in IE8 browser, however I am almost sure it will work in other versions of IE as well.