Rip's Domain

Crystal Reports XIR2 not displaying PDF reports on Windows 2008 and IIS 7.x

Posted in TechSupport, Windows by rip747 on September 9, 2011

UPDATE: I’ve tightened up the permissions that the Windows\Temp directory needs. Seems that IIS_IUSRS requires Modify permission.

I’ve been tackling this problem for a few weeks now. We are in the process of consolidating servers at my work and moving them all to a Windows 2008 (32-bit) server running IIS 7. There is one app in particular that was giving us problems that was using Crystal Reports XIR2.

What was happening was that when Crystal was generating a report to PDF and pushing it to the browser, the browser would just keep working and nothing was getting displayed. This resulted in the dreaded “Load Report Failed” error in the application event log. Also if you looked in the Widows\Temp directory, you would see the *.rpt file would never get deleted. Seems that something was blocking not only the Crystal from generating the PDF, but also from deleting the *.rpt file that was generated.

After weeks of trying everything I could think of under the sun and even contacting Microsoft about this, I couldn’t get a solution. Needless to say I had to figure this out myself, which is exactly the type of problems I like since it brings me back to my administrator roots 😉

In order to finally get this working, I had started from scratch. I first reinstalled all the software that the old server had on it:

Crystal Reports XI Release 2 .Net 2005 Server

I tried pulling up the report again and total fail. Looking at the dates of the dlls in the “C:\Program Files\Business Objects\Common\3.5\bin” directory on both servers, I noticed that the dates of the files were different. The ones on the old server were from 2008 while the ones on the new one were from 2006. Looking at the list of installed programs on the old server, I could only see that “Crystal Reports XI release 2 .Net 2005 Server” was the only things installed, very strange.

I asked a co-worker of mine if we had the full version of Crystal Reports XI Release 2 laying around anywhere and it turned out we did. I figured that maybe by installing the full version along with all the service packs for it, the dlls on the new server would get updated. I next installed the following:

Crystal Reports XI Release 2
Crystal Reports XI R2 Service Pack 2
Crystal Reports XI R2 Service Pack 3
Crystal Reports XI R2 Service Pack 4

and for good measure:

BusinessObjects Enterprise XI Release 2 Service Pack 1

After installing the software, I checked the dlls and they were at the 2008 date! Awesome! Tried the app again and… Nothing 😦

At this point I figured that it had to be a permission issue since 95% of the problems you encounter with Windows 2008 are permission issues. I downloaded and ran ProcessMonitor on the server, filtering by “Process Name” and selecting “w3wp.exe” as the process. I cleared the events and started the capture.

After hitting the site and replicating the error again, I looked in the events that ProcessMonitor captured. I noticed that at the end, I was getting an “Access Denied” on the Windows\Temp folder. I remembered that sometimes you will need to give the “Network Service” user modify access to Windows\Temp folder if web applications are using it. After configuring the security on the Windows\Temp folder I tried again. I still got the same “Access Denied” error 😦

At this point I was stumped, until I realized that the site was configured to also use “ASP.Net Impersonation”. Maybe it wasn’t using the “Network Service” account but the credentials of the person hitting the site? For the heck of it, I gave “Everyone” full control on the Window\Temp directory. Tried the site again and… Success! The app worked.

Now that I’ve gotten through the problem, I’m going to dive more into it since I’m not liking the fact of having “Everyone” full control on the Windows\Temp directory, but at least everything is working.

So in summary, in order get through this issue, you will need to install the following software:

Crystal Reports XI Release 2 .Net 2005 Server
Crystal Reports XI Release 2
Crystal Reports XI R2 Service Pack 2
Crystal Reports XI R2 Service Pack 3
Crystal Reports XI R2 Service Pack 4
BusinessObjects Enterprise XI Release 2 Service Pack 1

and give the following permissions on the Windows\Temp directory:

IIS_IUSRS – Modify “Everyone” full control

If anyone else has had this problem and gotten through it, please tell me what you did to resolve this.

Websites and SCMs branches, there has to be a better way.

Posted in Apache, Git, IIS, Linux, SCM, SVN, Windows by rip747 on September 24, 2009

Has this ever happened to you? You’re programming a website and within your source control manager (SCM) you have several branches. One branch could be the current version of the website (trunk or master depending on your SCM) and other branches could contain some new features or bugs fixes that you’re working on.

Now you want to test out or show the new features or bugfixes to your team or employer that are contained within these other branches and this is where the problem lies, how do you deploy these branches? Well its pretty easy right? You setup and configure an entirely new website to have the people hit that branch. So if your current version is residing on http://www.example.com, you might setup and configure a new website at www1.example.com for the branch you want people to have a look at.

To me this is a HUGE waste of time. For every branch you need to demo or test, you need to create a new website. Wouldn’t it be great if there was something out there that could allow the webserver to talk to your SCM directly and pull back the branch that you want simply be addressing it in the url?

For instance. Let’s say in my SCM I have a master branch containing the current version of the website and a branch called bug27 that contains some fixes for a bug I’m working on. Now if I wanted people to access both of these branches from the internet, I would have to configure two websites on my webserver. http://www.example.com would point to a directory containing the master branch files and bug27.example.com would point a different directory containing the bug27 branch files.

Imagine if all I had to do was to configure one website with two host headers, one for master at http://www.example.com and one for bug27 at bug27.example.com. Then just point the website to my SCM repo. Now depending on which host the people come to the website with, the webserver would be smart enough to pull back that branch from my SCM. This totally eliminates the need to configure a new website for every branch that you have.

That said, is there anything out there like this for Apache or IIS?

Using Dependency Walker

Posted in TechSupport, Uncategorized, Windows by rip747 on May 23, 2009

If there’s one tool I have completely fell in love with it’s Dependency Walker (DW). DW is a tool that let’s you see what a file, in many cases DLLs, depends on in order to get them to run or register.

Case in point, just yesterday I was trying to get Office 2003 SP 3 installed on our intern’s computer. No matter what I did, I was getting the dreaded 1904: Cannot Register MSRCLR40.dll error and it was driving me insane. Now according to Microsoft and other sourcesI found on the net, this is a problem with not having the latest MDAC installed for XP (2.81 sp1), however I checked (by following Microsoft’s instructions) and I did have the latest MDAC installed. In any case, I reinstalled the latest MDAC, rebooted, tried the installation again and got the same thing. Dammit!

At this point, I knew that I could be downloading and installing different things all day, so I opted to run a repair on Microsoft Office and see what that did. Wouldn’t you know, I got the 1904 error during the repair, go fig. Now I’m screwed. I ran out of options the net handed me, so that’s when I decided to download DW and give this magical life saver a run.

As I mentioned above, DW is a stand alone tool that let’s you select a file and shows you which other files (or modules) the file needs in order to run or, in our case, register. It’s extremely easy to use and understand.

The first thing you need to do is download and unzip the latest version of DW. As of this writing it’s 2.2.

After you have it unzipped, open up the folder and double click the depends.exe file. Once DW loads up, all you need to do is click File -> Open and select the file that you DW to inspect (for this example I selected MSRCLR40.dll that was in c:\windows\system32 on my machine).

dw2

Is that cool or what? As you can see from the screen shot above, DW will show you all of the files that MSRCLR40.dll needs in order to work. Now if there are any files that are missing from your machine, they will show up in RED at the very top of the list (I have everything this file needs, so I don’t have any errors). Once you have your list of files that you need, all you need to do is to either download the files from the internet or copy them from another machine and copy them to the appropriate place. Then just hit View -> Refresh (or F5) and see if everything is OK. Don’t worry about any delay-load dependency module errors you might get since these module aren’t loaded until you actually try to run or register the file.

In the case of my intern’s computer, DW told me that the machine didn’t have MSJET40.dll, MSJINT40.dll and MSJTER40.dll. I managed to copy these from my work machine, however you can download them from Microsoft. After that I went to a command prompt and ran:

regsvr32 c:\windows\system32\msrclr40.dll

The file registered successfully and I finally got Office 2003 SP 3 installed!

Using a tool like DW from the get go can save you hours of searching the internet and trying different solutions until you find the magical one that fixes your problem. I find that in the world of tech support this tool is invaluble and hopefully you will too.

IIS Admin service terminates with 0x8021080A

Posted in IIS, TechSupport, Windows by rip747 on August 6, 2008

After having some disk problems, I tried to start my development service and low and behold the World Wide Web publishing service wouldn’t start. Seems that the IIS Admin service (which the WWW service depends on) was terminating with an error code of 0x8021080A. Seems that during the chkdsk something was overwritten or corrupted.

Investigating I came to find that MetaBase.xml file that the IIS Admin service uses was a 0KB size. Which means basically that it lost all the configuration that IIS had. For those that don’t know, IIS has two XML files (MBSchema.xml and MetaBase.xml) that it uses to store all the configuration for your websites and IIS which are located in c:\windows\system32\inetsrv.

Even though this basically sucked, it was very easy to fix:

1) in windows explorer, browse to c:\windows\system32\inetsrv

2) rename the two XML files that IIS uses for configure.

3) goto the history folder (c:\windows\system32\inetsrv\history) and find the most recent backups of the two files.

4) copy the backups to the c:\windows\system32\inetsrv and rename them.

5) start the IIS Admin service.

ATI2DVAG.DLL BSOD and erratic behavior

Posted in TechSupport, Windows by rip747 on January 22, 2008

UPDATE: It’s been quite sometime since this post and I must say the problem has gone away. I would strongly recommend updating your drivers if you experienced this problem.

I’ve been having quite some problems lately with my computer. Seems that every time I remote desktop into my computer, my ATI card (Radeon X300) would goes nuts and cause a BSOD (blue screen of death). This really sucks when I’m away because I have to get a co-worker to physically power off the machine and restart it for stuff to work again.

According to the BSOD information, the culprit seems to be the ATI2DVAG.DLL file. I did a little digging and noticed that my driver version was 6.14.10.6561, which wasn’t too bas since most of the people complaining about this problem had older drivers then me. I figured that maybe by chance ATI might have released a new driver (they are notorious for never updating there stuff).

Hence forth, I hopped on over to the ATI site and looked for a driver for my card. Wouldn’t you know it, they just updated the driver for the Radeon X300 (I’m talking literally 6 days ago). I’ve downloaded and installed the driver so now I’m at version 6.14.10.6764. Hopefully I won’t have this problem anymore.

I’ll have to wait awhile before calling this problem solved. You know how things always work great when you first install them and then go all screwy over time… hey, that sounds exactly like Windows o_O


AddThis Social Bookmark Button

0x80072efd with Windows Update and Windows 2000

Posted in TechSupport, Windows by rip747 on January 17, 2008

Why am I obsess with having to figure things out. It must be from my phone tech days.

Anywho…. if you ever ran into this little gem, you probably went nuts trying to figure out how to resolve it. After 2 hours of trying this and that, I finally solved it. He is what I did:

First: Look for proxycfg.exe in your %windir%. If it isn’t there, go download it here. You will need this file.

Here is what I did

net stop “Automatic Updates” REM stopping the update service
proxycfg -d REM recycle proxy settings
proxycfg -u REM recycle proxy settng
rmdir %windir%\SoftwareDistribution /s REM removing WindowsUpdate files so they will download again
del %windir%\WindowsUpdate.log REM remove log so you can see any errors clearer
net start “Background Intelligent transfer Service” REM required for updates to install
net start “Automatic Updates” REM starting the Update service again

If you want, you can copy and paste that stuff into a batch file and run it. Have fun.