7

帮助!!我在(根级别)App_Code 目录下有一个 .cs 文件,用于检索请求 URL 的正确模板(它链接到我们自己的内容管理数据库)。最初,它运行良好——我可以对其进行更改,并且它们被 Web 应用程序正常接收。然后发生了一些事情(不知道是什么),现在无论我做出什么改变,它们都不会被识别。即使我删除了整个 App_Code 目录,也没有什么区别 - 我似乎仍然在获取 App_Code 目录中的早期(缓存??)版本。.cs 文件中的代码如下:

using System;
using Custom.CMS.Facade;
using Custom.CMS.BO;
public class CMHttpModule : IHttpModule
{
    code here...
}

即使在我将网站复制到我们的实时服务器后,也会出现同样的问题。

我不明白的是 - 如果我在 .cs 代码中引入故意错误,我仍然会收到编译错误,并且在成功编译后,会在 C:\WINDOWS\Microsoft.NET\Framework 下创建 App_Code.xxxx.dll \v2.0.50727\临时 ASP.NET 文件

那么我的 Web 应用程序实际使用的是哪个版本的 App_Code?我如何让它选择“正确”的?

仅供参考,我正在使用 C#、Visual Web Developer Express 2008 和 IIS 6 Web 服务器

任何帮助将不胜感激。

4

6 回答 6

6

重新打开解决方案也有效。

于 2013-04-18T05:36:04.380 回答
3

我不确定您是如何发布 Web 应用程序的,但您可以尝试以下方法:

  • 如前所述,检查您使用的是项目引用而不是文件引用,这些 DLL 是从您自己的 C# 项目构建的。另外,检查App_Code目录中的 .cs 文件是否Build Action设置为Compile
  • 检查所有项目是否都针对相同的 .NET 框架:v2.0、v3.5、v4.0 或 v4.5。您可以在每个项目的Application选项卡中进行检查。Properties不要使用客户端配置文件变体。
  • 在您的源代码中,删除您构建的 DLL(通常是 bin 和 obj 文件夹中的那些),然后使用 Visual Studio 执行完整构建。这相当于重建(阅读:清洁然后构建)。然后,发布到您的 Web 服务器。
  • 冒着明显的风险,请确保您用于查看您的网站的网络浏览器在您访问该网站之前已清除其缓存。

希望这可以帮助。

编辑:突然想到:这个ASP.NET Web 应用程序实际上是一个网站吗?如果是这样,那么ASP.NET 编译器可能无法识别您的代码更改,因为“如果未引用代码文件,则不会编译它”。

ASP.NET网站与 ASP.NET Web应用程序之间的主要区别在于,前者通常由 ASP.NET 在安装或更新站点后第一次收到请求时在服务器上动态(自动)编译,而后者在发布之前就已完全编译成 DLL。您可以在上面的链接中阅读有关它的更多信息。

于 2012-07-31T05:49:40.760 回答
3

您可以右键单击该文件,转到属性并检查构建操作。它必须设置为“编译”。

于 2012-07-25T13:34:53.900 回答
1

昨天我遇到了同样的问题,我修复了它,确保网站项目上的类库引用指向你的类库项目(而不是 bin 文件夹中的 dll)。

看起来是因为该网站的目标是 .net 2.0,而类库位于 .net 3.5 中,网站项目以某种方式忽略了重建的 dll 并使用了网站项目 bin 文件夹中的那些。

于 2011-09-21T10:27:11.193 回答
1

@SeanW -

1)您是否尝试修改您的 Web.Config 而不是直接删除它?Web.Config 已缓存,但对其的任何修订都应回收您的应用程序缓存。

2) 你有没有试过把你的整个网站吹走,然后从头开始复制它?(特别要确保删除并重新复制 bin 目录中的所有预编译文件。)

@帕特里克-

1) 您是否尝试删除临时 ASP.Net 文件目录中的所有内容?

2)如果您对解决方案中的依赖项目(不是您的启动项目)进行了修订,您是否单独手动重建这些依赖项目?

3) 您是否有权在 IIS 中为您的实时网站回收应用程序池?

4) 您是否尝试从头开始重新复制您的实时网站或修改您的实时网站中的 Web.Config?

一般应用缓存提示 -

  • 您通常可以通过对 Web.Config 文件进行简单的修改来刷新您的应用程序缓存。

  • 本线程所述,Global.asax 更改、bin 目录更改和 App_Code 更改也可能触发应用程序池的刷新。

  • 作为一个长期的解决方案,您可能希望通过文件依赖或SQLCacheDependency 类来管理您的应用程序缓存。(尽管最后一个建议可能不适用于 GoDaddy 等共享托管网站。)

于 2012-07-31T14:11:28.713 回答
0

ASP.NET Web 应用程序有几个陷阱。重新加载项目是解决几个问题的一种方法......确实很奇怪(称我为错误)!就个人而言,我更喜欢具有JIT 编译功能的 ASP.Net 网站(而不是应用程序) 。FMO,它是维护 prj 的更快、更简单和更简单的方法。

于 2014-05-24T06:29:25.307 回答