From: Martin Plechsmid on
Hello.

(Details at the end of this post.)

I have published my web site from VS2008 with the non-updatable option (i.e.
updatable="false" in PrecompiledApp.config). The site is precompiled,
however when requesting an .asmx file, the server responds with

"The file '/test/PdfServiceLib.asmx' has not been pre-compiled, and
cannot be requested."

I used the ProcessMonitor to see what's happenning, and the w3wp.exe process
behaves strangely. Six times (6x !) it finds the
"pdfservicelib.asmx.cdcab7d2.compiled" successfully in the bin directory,
but the seventh time it looks for it in the "Temporary ASP.NET Files"
directory under the .NET installation - and fails.

Why does IIS look for the pre-compiled file in the ASP.NET cache, when the
site is marked as non-updatable? What do I need to set up in order IIS does
not copy the files into the ASP.NET cache?

Thank you,
Martin.

------------------
Details:

The ultimate purpose of making the site non-updatable was to prevent IIS to
copy the precompiled files into the ASP.NET cache. The asmx file refers to a
..NET assembly that depends on native DLL libraries. The problem is that when
the site is updatable, IIS copies the assembly into the ASP.NET cache, and
the assembly is then unable to find the native DLLs - because IIS leaves the
DLLs at the original place and does not copy them into the ASP.NET cache as
well.

PdfServiceLib.asmx contains a single line:
<%@ WebService Class="PdfServiceLib.PdfServiceLibClass" %>
When the site is compiled, the "bin/pdfservicelib.asmx.cdcab7d2.compiled" is
created from the PdfServiceLib.asmx file.

The PdfServiceLib.dll assembly implementing the
="PdfServiceLib.PdfServiceLibClass" class is placed in the bin/ folder. It
is written in C++/CLI and depends on the native C++ runtime DLLs. Besides
the ASP.NET HTTP module interface it supports also the COM interface, and
this way it works correctly.

The computer is Windows 2003 Server SP2, x64 edition, IIS 6. The DLLs are
32-bit and the IIS is switched to the 32-bit mode. trhe assembly uses .NET
2.0.