2011-05-04 23 views
2

我最近重新组织了一个Web应用程序,以便所有文件都不在应用程序根目录中,而是分成了业务区域子文件夹,按类型分为多个文件夹。因此,而不是具有:ASP.Net用户控件在子目录中,找不到目录错误

  • 〜/ MasterPage.master
  • 〜/ Page.aspx
  • 〜/ UserControl.ascx

结构是现在这个样子:

  • 〜/ App/Common/MasterPages/MasterPage.master
  • 〜/ App/Common/Pages/Page.aspx
  • 〜/应用/通用/用户控件/ UserControl.ascx

这一切都工作的很好我的机器上,一切都编译并在调试运行或发布模式,但是当我部署到测试服务器的事情走了梨梨形。部署我在Visual Studio中使用_deploy_msi项目创建一个MSI,然后在测试服务器上运行MSI。这是直接从.aspx引用

用户控件似乎是美好的,但如果一个用户控件有孩子的用户控件,然后错误接踵而至:

目录 “C:\的Inetpub \ wwwroot文件\ Web应用程序\ App \ Common \ MasterPages' 不存在。无法启动 监控文件更改。

目录 'C:\ Inetpub \ wwwroot \ WebApp \ App \ Common \ UserControls' 不存在。无法启动 监控文件更改。

的目录不测试服务器上存在,因为没有文件当中去,所有的内容在生成过程中编译成的DLL,所以MSI没有任何文件复制到他们。如果我手动创建目录,那么即使它们都是空的,一切都会开始工作,所以一个明显的解决方法是在每个文件夹中包含一个blank.html或类似文件,以便它们由安装程序创建;另一种方法是将用户控件放在与页面相同的目录中 - 但这似乎都是在讨论真正的问题:为什么部署的Web应用程序首先需要这些目录存在?

因此,有我想回答几个问题:

  • 这是一个根本性的错误为首的做法,我可以期望看到因为在这个项目目录结构在未来进一步类似问题? (如果是这样,有什么更好的方式来组织应用程序?)
  • 有没有一种方法来配置构建,使ASP.net不需要'开始监视文件更改'? (这是否与'编译网站可更新选项?'
  • 是否有一些很好的文档说明了所有这些工作如何解释这个问题是什么?
+0

什么版本的ASP.NET,它是一个Web应用程序项目,是否正确? – IrishChieftain 2011-05-04 15:13:14

+0

@IrishChieftain .Net 3.5SP1,我该如何判断?我有'建立网站'等选项,如果我右键点击它。 – robertc 2011-05-04 15:16:51

+1

我在这篇博文中回过头来:http://bit.ly/lUeISF ...先复制用户控件,看看是否有效。如果失败并且这是一个网站项目,那么引用用户控件时存在已知问题......如果是这种情况,最好转换为Web应用程序项目。 – IrishChieftain 2011-05-04 15:35:50

回答

1

尽管任何UserControl都会导致它,但无论页面或其他UserControl是否使用它,我都有同样的确切错误。我相信只有当这个控制在一次请求中被使用超过5次时才会发生。

一个解决办法是空的占位符文件添加到含CustomControl每个目录,并设置占位符文件的属性,以Build Action: ContentCopy to Output Directory: Copy always。这使得目录在网站发布时不会消失。