2013-05-02 87 views
1

我有一个生产系统和测试系统,都运行IIS。在生产系统中,一切运行良好。在测试系统中,我有一个包含站点代码的文件夹的定向副本,该站点代码被设置为虚拟目录。 App_Code文件夹位于根目录并包含所有.cs文件。当在测试中运行同一站点时,我得到一个ASP.NET IIS7.5解析器错误

Server Error in '/' 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 'SPTasks.master'. 

Source Error: 


Line 1: <%@ Master Language="C#" inherits="SPTasks.master"%> 
Line 2: <html> 
Line 3: <head runat="server"> 


Source File: /SPTasks/master.master Line: 1 

任何想法为什么这将在测试中,而不是在生产?代码是否由于某种原因而编译?

谢谢!

+0

难道这些不同的机器?你有没有在应用程序池中检查框架?例如'Mvc'安装? – Silvermind 2013-05-02 18:20:13

+0

他们是不同的机器。他们都使用安装了3.5版本的ASP.NET Framework 2.0。我不确定具体的MVC。有没有一种快速检查IIS7.5的方法? – steventnorris 2013-05-02 18:21:48

+0

@Silvermind根据MVC的版本,希望3+,你不应该需要在服务器上本地安装它。它应该完全从应用程序的bin文件夹中运行。 – kettch 2013-05-02 18:22:07

回答

1

一些评论询问了MVC,但这看起来像一个WebForms应用程序 - 纠正我,如果我错了?在过去,如果应用程序尚未编译,我已经看到这个错误。你提到你一次只能复制一个文件。你真的编译过应用程序吗?如果bin文件夹中没有包含您的SPTasks.master.cs类的已编译代码的dll,则会出现此错误。由于您没有使用VS来编译您的应用程序,因此您需要根据this MSDN article直接从命令行使用csc。

如果你在那里有一个DLL,它可能是值得用一个反编译器(无论是ReflectorJetbrains DotPeek,这是免费的)里面找验证SPTasks.master.cs类是存在的。

另一件事来检查是该网站在其下运行的应用程序池配置为.NET Framework 2.0版而不是4.0

+0

我在想这也是一个编译问题。据我了解,App_Code中的代码应该在第一次运行网站应用程序时进行编译(如果尚未)。所以我第一次浏览网站时,应该编译代码。我从来不需要通过命令行来编译我们的生产环境。 – steventnorris 2013-05-03 11:53:07

+0

我已经做了一些检查,你是正确的。代码不编译。但是,我不应该将代码编译到bin文件夹才能工作。它在第一次运行时编译,如“自动编译”下所述:http://msdn.microsoft.com/en-us/library/ms178466(v=VS.100).aspx – steventnorris 2013-05-03 14:12:22

+0

听起来像你有事情设置以下网站模型,而不是Web应用程序模型。也许你有一个关于[动态编译](http://msdn.microsoft.com/library/ms366723)丢失或设置不正确的设置? – levelnis 2013-05-03 14:36:19

0

您的IIS网站可能配置错误。 IIS“虚拟目录”与应用程序作用域不同。

在IIS管理器中,右键单击应用程序的根目录并选择“转换为应用程序”。

+0

虚拟目录是生产环境的工作方式,测试环境需要完全反映生产。 – steventnorris 2013-05-03 11:51:41