2

The problem

I can't deploy a website (call it "zzz") to our production environment. Here's the exception:

Server Error in '/Admin' Application.

Parser Error

Description: An error occurred during the parsing of a resource required to service this request. Please review the following specific parse error details and modify your source file appropriately. 

Parser Error Message: Could not load type 'zzz.Admin.Default'.

Source Error: 


Line 1:  <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="zzz.Admin.Default" %>
Line 2:  
Line 3:  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

Source File: /Admin/default.aspx    Line: 1 

Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.6.1055.0  

Similar error is addressed at here or here but I'm not interested in changing the code (CodeBehind to CodeFile) because 1) the project works perfectly fine, both on my local machine and when deployed to development (the only changes in code are in the web.config pointing to a different database) and 2) there are some indications there is some other underlying problem.

Details

This is an old website I had to make some changes to, and took the opportunity to do some cleanup (like merging conflicting duplicated code that was different across projects...). The solution was previously divided into four different projects (Admin, Account, the "default website" root, and one other), each of which had their own virtual directory on IIS (3 underneath the root website). I combined this into one project and got rid of the virtual directories. Everything works fine on my machine. Everything works fine in the development environment. But it does not work in production.

If I copy the /bin folder the way things used to be, the website works again.

old version/code; works on local, dev, & production; virtual directories.

+-+     website zzz
  +-+   /Account
  | +-- /Account/bin (Account.dll)
  |
  +-+   /Admin
  | +-- /Admin/bin (Admin.dll)
  |
  +...

new version/code; works on local, dev; shared dll in bin folder; no virtual directories. Does not work on production.

+-+     website zzz
  +-+   /Account
  |
  +-+   /Admin
  |
  +-+   /bin (zzz.dll)
  |
  +...

In order to get the website to work on production I have to copy the bin folder into the previous locations:

+-+     website zzz
  +-+   /Account
  | +-- /Account/bin (zzz.dll)
  |
  +-+   /Admin
  | +-- /Admin/bin (zzz.dll)
  |
  +...

If I remove temp files, I can see the /Admin and /Account folders being created in the temp location (with new dll), even though everything should just be under one folder (right?).

I'm expecting temp files to show up in C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\root\ but instead they are being created one level up, e.g. C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\admin, one for each location the /bin folder is copied to.


I've tried removing the temp files for this website, starting and stopping the website, and starting and stopping the app pools. Rebooting has not yet been tried as there are a number of different websites being hosted from the same instance, but this will probably happen soon.


Environment

Two different machines, behind a load balancer, but both are referencing a shared folder the website is located in. In fact, DFS Management is actually used to sync the website folder between the two machines (could this be related?).

AFAIK our dev and prod environments are the same, but there could be something out of sync, which has happened before. Not sure what I'm looking for as IIS settings look to be the same, in general.

There's nothing in the web.config about caching.

app pool "Enable 32-Bit application" is set to false in all environments.

superfetch is not (has not ever been) enabled.

win forms project targeting .net framework 4
IIS 7.5.7600.16385
Windows Server 2008 R2


Edit update

There are 15 patches on dev not on prod, and 65 patches on prod not on dev. Trying to figure out the best way to sort through this (with help from here ).

0

Rebooting fixed the issue (our regularly scheduled maintenance). I'm guessing something was cached somewhere. If someone has a better explanation I will accept that answer.

| improve this answer | |
0

In my case, rebooting did not suffice.

I opened IIS Manager and browsed the application pool. (Right-click -> view applications)

There I saw my old paths still listed, multiple times, but the application they belonged to was already deleted, when exploring the web site in question through IIS Manager however, the correct folder would be called.

So I followed instructions from this post to remove "phantom applications". (In essence: Shut down iis. edit C:\windows\system32\inetsrv\config\applicationHost.config and remove application-nodes that still include wrong paths. Restart iis.)

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.