gpt4 book ai didi

asp.net-mvc-4 - App_Code 文件夹在已发布的网站中自动创建

转载 作者:行者123 更新时间:2023-12-04 12:54:52 24 4
gpt4 key购买 nike

我也有一个在 VS 2010 中使用 Umbraco 6 创建的 MVC4 应用程序,并且我创建了一个 Web 部署项目,我的 Team City CI 服务器使用该项目将我的网站部署到 CI 环境进行测试。

在 CI 服务器上,我第一次加载主页(或任何页面)时,它加载得非常好。然而,加载页面的行为会在我的 CI 服务器上创建一个 App_Code 文件夹,之后我收到消息“不允许使用目录 '/App_Code/',因为应用程序已预编译”。删除 App_Code 文件夹意味着它再次适用于一页加载并再次创建该文件夹。

删除 PrecompiledApp.config 文件会导致我的站点无法加载 YSOD,说明“对象引用未设置为对象的实例”。在堆栈跟踪“Umbraco.Web.UmbracoModule.BeginRequest(HttpContextBase httpContext) +25”中的以下点

需要明确的是,我的项目中没有 App_Code 文件夹,我不想要也不需要。我想要的只是让它在页面加载时停止自动创建一个!我在 VS 中使用过 Umbraco,并且之前多次以相同的方式部署,只是没有使用 Umbraco 6 和 MVC 项目。

有什么想法为什么会自动创建 App_Code 以及我可以做些什么来阻止它?

非常感谢

理查德

最佳答案

我似乎以与您类似的方式使用 Umbraco,将其包装为 MVC 4 项目。因此,它变成了“VS Web 应用程序”而不是“VS 网站”。

重要的是要记住,Umbraco 最初并不是作为应用程序运行的,而且 Umbraco 中的许多功能首先是针对使用 App_Code 的。

Umbraco.Core 中的内部类 AssemblyExtensions、PluginManager、TypeHelper 和公共(public)类 TypeFinder 具有依赖于 App_Code 文件夹存在的方法。即使您的解决方案中不需要 App_Code,Umbraco 也需要,如果您不想看到它,只需将其从您的解决方案中隐藏即可。如果您真的不希望它删除源中对它的所有引用并创建您自己的 Umbraco 编译。

== 在下面编辑 ==

阅读您的评论并再次发布后,我为您的问题创建了一个小解决方案。 Umbraco 创建 App_Code 的事实仍然是因为没有 App_Code 存在的框架初始化将无法工作。但是,正如 OP 指出的那样,重新编译和创建自己的 Umbraco 分布会在升级等时产生一些额外的维护。

允许 Umbraco 创建 App_Code 文件夹,但在应用程序初始化时也将其删除,这不是处理此问题的理想但最干净的方法。我会使用 IApplicationEventHandler。示例代码适用于我的盒子。

using Umbraco.Core;
using Umbraco.Core.IO;

namespace YourNamespace.EventHandlers
{
public class AppCodeEvents : IApplicationEventHandler
{
public void OnApplicationInitialized(UmbracoApplicationBase umbracoApplication, ApplicationContext applicationContext)
{ }

public void OnApplicationStarting(UmbracoApplicationBase umbracoApplication, ApplicationContext applicationContext)
{ }

public void OnApplicationStarted(UmbracoApplicationBase umbracoApplication, ApplicationContext applicationContext)
{
if (System.IO.Directory.Exists(IOHelper.MapPath(IOHelper.ResolveUrl("~/App_Code"))))
{
System.IO.Directory.Delete(IOHelper.MapPath(IOHelper.ResolveUrl("~/App_Code")));
}
}
}
}

关于asp.net-mvc-4 - App_Code 文件夹在已发布的网站中自动创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17369301/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com