【发布时间】: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 何时抱怨?另外请发布所有错误消息,并检查输出和错误窗口。