某些页面的发布网站失败

时间:2008-09-15 15:40:38

标签: c# .net asp.net .net-2.0

我发布网站时遇到一个奇怪的问题。我继承了这个项目,问题在我到达之前就开始了,所以我不知道是什么条件导致了问题的产生。

基本上,网站项目下面的3个文件夹无法正常发布。当PrecompiledWeb传输到主机时,必须将这三个文件夹从Visual Studio项目(即它们不再是已发布的版本)手动复制到主机,以使其工作。

如果保留发布操作的结果,则文件夹中的任何页面都会导致以下错误:

  '/'应用程序中的服务器错误。   无法转换类型的对象   'System.Web.Compilation.BuildResultNoCompilePage'   输入   'System.Web.Compilation.BuildResultCompiledType'。   描述:未处理的异常   在执行期间发生   当前的网络请求。请查看   堆栈跟踪以获取更多信息   错误及其来源   代码。

     

异常详细信息:   System.InvalidCastException:无法执行   铸造对象的类型   'System.Web.Compilation.BuildResultNoCompilePage'   输入   'System.Web.Compilation.BuildResultCompiledType'。

     

来源错误:

     

生成了未处理的异常   在执行当前   网络请求。有关的信息   异常的起源和位置   可以使用例外来识别   堆栈跟踪下面。

     

堆栈追踪:

     

[InvalidCastException:无法投射   对象类型   'System.Web.Compilation.BuildResultNoCompilePage'   输入   'System.Web.Compilation.BuildResultCompiledType'。]   System.Web.UI.PageParser.GetCompiledPageInstance(VirtualPath   virtualPath,String inputFile,   HttpContext上下文)+254
  System.Web.UI.PageParser.GetCompiledPageInstance(字符串   virtualPath,String inputFile,   HttpContext上下文)+171
  URLRewrite.URLRewriter.ProcessRequest(HttpContext的   上下文)+2183
  System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()   +405 System.Web.HttpApplication.ExecuteStep(IExecutionStep   步,布尔& completedSynchronously)   65

     

版本信息:Microsoft .NET   框架版本:2.0.50727.832;   ASP.NET版本:2.0.50727.832

有没有人知道这些页面无法正确发布的可能原因是什么?我能看到的任何东西都可能表明问题的根源?

增加: 每次都是一个完全干净的构建,所以旧的bin文件应该没有问题。我还检查了bin文件夹中项目的日期戳,它们是最新的。

第二次增加: 该项目最初是作为 Web站点创建的,而不是Web应用程序。抱歉模棱两可。

4 个答案:

答案 0 :(得分:1)

你可能会考虑尝试微软的Web Deployment Projects。它们基本上可以让你更好地控制MSBuild,但它可能有助于解决你的部署/预编译问题。

我们是否推断您使用的是网站项目类型(以及不是 Web应用程序)?

答案 1 :(得分:1)

我猜测,因为当你发布时,它正在编译你的网站项目,并且它在不同文件夹或子文件夹的某个地方碰到一个重复的类名。确保检查继承标签和类名,这样就不会同样调用2个类。这在编码和调试时在不同文件夹中发生时很好并且不会出错,但是当你去发布/部署它时会出错。 ......希望这是有道理的。

答案 2 :(得分:0)

我会尝试清理bin \文件夹。 无论如何,我们的商店完全放弃了网站,转而使用网络表单应用程序,这可能要好得多。

编辑:Migration HOW TO here

答案 3 :(得分:0)

我有一个类似的问题,发布会说它成功,但发布文件夹仍然是空的。

除了查看Web Deployment Projects之外,您还应将详细程度设置为Diagnostic(Tools => Options => Project and Solutions => Build and Run => Msbuild项目构建输出详细程度)

在我的情况下,这会产生显示有意义的编译器错误的效果,这有助于我解决问题。

然后,您还可以在shell提示符中使用aspnet_compiler指令运行-errorstack以显示其他错误。