问题
我不能在我们的生产环境中部署一个网站(称之为“zzz”)。 这是一个例外:
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
类似的错误是在这里或这里解决,但我没有兴趣改变代码( CodeBehind CodeFile ),因为1)项目工作得很好,无论是在我的本地机器上,当部署到开发(只有代码的变化web.config指向不同的数据库)和2)有一些迹象表明还有其他一些潜在的问题。
细节
这是一个旧的网站,我不得不做一些改变,并借此机会做一些清理工作(如合并冲突重复的代码,跨越不同的项目…)。 该解决scheme以前分为四个不同的项目(pipe理员,帐户,“默认网站”根和另一个),其中每个都有自己的虚拟目录在IIS(根网站下3)。 我把它合并成一个项目,摆脱了虚拟目录。 一切工作正常在我的机器上。 在开发环境中一切正常。 但它在生产中不起作用。
如果我以前的方式复制/ bin文件夹,该网站再次运行。
旧版本/代码; 在当地,开发和生产工作; 虚拟目录。
+-+ website zzz +-+ /Account | +-- /Account/bin (Account.dll) | +-+ /Admin | +-- /Admin/bin (Admin.dll) | +...
新版本/代码; 在当地工作,dev; 在bin文件夹中共享dll; 没有虚拟目录。 不适用于生产。
+-+ website zzz +-+ /Account | +-+ /Admin | +-+ /bin (zzz.dll) | +...
为了让网站在生产上工作,我必须将bin文件夹复制到以前的位置:
+-+ website zzz +-+ /Account | +-- /Account/bin (zzz.dll) | +-+ /Admin | +-- /Admin/bin (zzz.dll) | +...
如果我删除临时文件,我可以看到/临时位置(使用新的DLL)中创build的/pipe理员和/帐户文件夹,即使所有东西都应该在一个文件夹(右?)下。
我期望临时文件显示在C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\root\但是它们正在创build一个级别,例如C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\admin ,/ bin文件夹复制到每个位置。
我已经尝试删除该网站的临时文件,启动和停止网站,并启动和停止应用程序池。 重新启动还没有被尝试,因为从同一个实例托pipe了许多不同的网站,但是这可能很快就会发生。
环境
两台不同的机器位于负载均衡器的后面,但都是引用该网站所在的共享文件夹。事实上, DFSpipe理实际上用于同步两台机器之间的网站文件夹(这可能是相关的吗?
AFAIK我们的开发和生产环境是一样的,但可能有一些不同步,这是以前发生的。 不知道我一直在寻找什么样的IIS设置,看起来一样。
web.config中没有关于caching的内容。
应用程序池“启用32位应用程序”在所有环境中设置为false。
superfetch不是(从来没有)启用。
win表单项目瞄准.net框架4
IIS 7.5.7600.16385
Windows Server 2008 R2
编辑更新
dev上有15个补丁不在prod上,65个补丁不在dev上。 试图找出最好的方法来sorting(在这里的帮助)。
重新启动解决了这个问题(我们的定期维护)。 我猜是什么东西被caching的地方。 如果有人有更好的解释,我会接受这个答案。