我发布网站时遇到一个奇怪的问题。我继承了这个项目,问题在我到达之前就开始了,所以我不知道是什么条件导致了问题的产生。
基本上,网站项目下面的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应用程序。抱歉模棱两可。
答案 0 :(得分:1)
你可能会考虑尝试微软的Web Deployment Projects。它们基本上可以让你更好地控制MSBuild,但它可能有助于解决你的部署/预编译问题。
我们是否推断您使用的是网站项目类型(以及不是 Web应用程序)?
答案 1 :(得分:1)
我猜测,因为当你发布时,它正在编译你的网站项目,并且它在不同文件夹或子文件夹的某个地方碰到一个重复的类名。确保检查继承标签和类名,这样就不会同样调用2个类。这在编码和调试时在不同文件夹中发生时很好并且不会出错,但是当你去发布/部署它时会出错。 ......希望这是有道理的。
答案 2 :(得分:0)
我会尝试清理bin \文件夹。 无论如何,我们的商店完全放弃了网站,转而使用网络表单应用程序,这可能要好得多。
答案 3 :(得分:0)
我有一个类似的问题,发布会说它成功,但发布文件夹仍然是空的。
除了查看Web Deployment Projects之外,您还应将详细程度设置为Diagnostic(Tools => Options => Project and Solutions => Build and Run => Msbuild项目构建输出详细程度)
在我的情况下,这会产生显示有意义的编译器错误的效果,这有助于我解决问题。
然后,您还可以在shell提示符中使用aspnet_compiler
指令运行-errorstack
以显示其他错误。