【问题标题】:How to modify precompiled ASP.NET web site? Visual Studio complains that site is precompiled如何修改预编译的 ASP.NET 网站? Visual Studio 抱怨该站点已预编译
【发布时间】:2009-07-06 21:59:01
【问题描述】:

我有一个基于 ASP.NET (C#) 的 Web 应用程序,其中包含一些预编译组件。很长一段时间以来,我一直在毫无问题地支持它,添加功能和扩展。现在我面临另一个需要调用远程 SOAP 服务的扩展。

我已经尝试根据我在这里得到的一些建议来做这件事——通过添加 Web 引用、创建代理类等等,但是 Visual 抱怨应用程序是预编译的。

这是编译器的实际输出:

目录 '/trxv/App_WebReferences/' 不是 允许,因为应用程序是 预编译。描述:一个未处理的 期间发生异常 执行当前的 Web 请求。 请查看堆栈跟踪以获取更多信息 有关错误和位置的信息 它起源于代码。

异常详情: System.Web.HttpException: 目录'/trxv/App_WebReferences/' 不允许,因为应用程序 已预编译。

来源错误:

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

堆栈跟踪:

[HttpException (0x80004005): 目录'/trxv/App_WebReferences/' 不允许,因为应用程序 已预编译。]
System.Web.Compilation.CodeDirectoryCompiler.GetCodeDirectoryAssembly(虚拟路径 virtualDir, CodeDirectoryType dirType, 字符串程序集名称、字符串集 排除子目录,布尔值 isDirectoryAllowed) +8805619
System.Web.Compilation.BuildManager.CompileCodeDirectory(虚拟路径 virtualDir, CodeDirectoryType dirType, 字符串程序集名称、字符串集 排除子目录)+128
System.Web.Compilation.BuildManager.CompileWebRefDirectory() +31 System.Web.Compilation.BuildManager.EnsureTopLevelFilesCompiled() +312

[HttpException (0x80004005): 目录'/trxv/App_WebReferences/' 不允许,因为应用程序 已预编译。]
System.Web.Compilation.BuildManager.ReportTopLevelCompilationException() +58 System.Web.Compilation.BuildManager.EnsureTopLevelFilesCompiled() +512 System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, 托管环境参数 托管参数)+729

[HttpException (0x80004005): 目录'/trxv/App_WebReferences/' 不允许,因为应用程序 已预编译。]
System.Web.HttpRuntime.FirstRequestInit(HttpContext 上下文)+8886319
System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext 上下文)+85
System.Web.HttpRuntime.ProcessRequestInternal(HttpWorkerRequest 写)+259

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

是否有其他或多或少简单(即高级)的调用 SOAP 客户端的方法,不需要重新编译?不幸的是,该系统的原始源代码不可用。

【问题讨论】:

  • 我认为你有一个更普遍的问题:如何扩展一个预编译的网站,但你没有源代码。这不仅仅是网络服务问题。
  • 有点......问题是它使用了几个组件,这些组件已预编译并在主模板中使用。我不碰那些。我只是在创建一个新页面,使用一个新表单进行一些远程肥皂调用......我可以一直打开 HTTP 连接并将 XML 直接与服务对话,但我希望 .NET 有一些更好/更智能实现这一目标的方法。
  • 我建议您将您的问题编辑为关于无法更改预编译站点的问题。我怀疑这个问题真的是特定于 Web 服务的。扩大这个问题会让你得到更多的关注——我相信 ASP.NET 开发人员比 Web 服务开发人员要多。最后,考虑一下 WCF,因为 Microsoft 现在认为 ASMX 是“遗留软件”。
  • 好的,您能否详细说明一下 VS 何时抱怨?另外请发布所有错误消息,并检查输出和错误窗口。

标签: c# asp.net soap


【解决方案1】:

亚历克斯,

注意我最近的编辑。问题与您没有 Web 应用程序这一事实有关 - 您有一个网站。它们是独一无二的,而且很奇怪。

除非必须,否则我从不使用它们,所以我实际上从未见过这种异常。不过,它似乎确实是最终的。所以这里是你必须解决这个问题的方法:

创建一个单独的类库项目。将 Web 引用添加到类库并构建它。然后,看看您是否可以在您的网页中引用该类库。类库应包含代理类。

【讨论】:

  • 约翰,这是个好主意!非常感谢!我会这样做,看看会发生什么:) 会保持这个问题开放,以防万一。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-08
  • 2014-01-08
  • 2011-01-11
  • 2010-10-01
  • 1970-01-01
相关资源
最近更新 更多