C# 我的ASP.NET应用程序\代码更改未被拾取(或被缓存??)

C# 我的ASP.NET应用程序\代码更改未被拾取(或被缓存??),c#,.net,iis-6,app-code,C#,.net,Iis 6,App Code,救命!!我在(根级别)App_代码目录下有一个.cs文件,用于检索请求URL的正确模板(它链接到我们自己的内容管理数据库)。最初,它工作得很好——我可以对它进行更改,它们被web应用程序接收。然后发生了一些事情(不知道发生了什么),现在无论我做了什么改变,他们都不被认可。即使我删除了整个App_代码目录,也没有什么区别——我似乎仍然在选择App_代码目录中的早期版本(缓存??)。.cs文件中的代码如下所示: using System; using Custom.CMS.Facade; using

救命!!我在(根级别)App_代码目录下有一个.cs文件,用于检索请求URL的正确模板(它链接到我们自己的内容管理数据库)。最初,它工作得很好——我可以对它进行更改,它们被web应用程序接收。然后发生了一些事情(不知道发生了什么),现在无论我做了什么改变,他们都不被认可。即使我删除了整个App_代码目录,也没有什么区别——我似乎仍然在选择App_代码目录中的早期版本(缓存??)。.cs文件中的代码如下所示:

using System;
using Custom.CMS.Facade;
using Custom.CMS.BO;
public class CMHttpModule : IHttpModule
{
    code here...
}
即使在我将网站复制到我们的live服务器之后,同样的问题也会发生

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

那么,我的web应用程序实际使用的应用程序代码是什么版本?我如何让它拾取“正确”的一个

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


任何帮助都将不胜感激。

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


看起来是因为网站的目标是.net 2.0,类库位于.net 3.5中。不知何故,网站项目忽略了重建的dll,并使用了网站项目bin文件夹中的dll。

能否右键单击该文件,转到属性并检查生成操作。必须将其设置为“编译”。

我不确定您是如何发布web应用程序的,但您可以尝试以下几点:


  • 如前所述,检查您是否使用项目引用而不是从您自己的C#项目生成的DLL的文件引用。此外,请检查
    App\u code
    目录中的.cs文件是否将其
    生成操作设置为
    编译
  • 检查所有项目是否针对相同的.NET framework:v2.0、v3.5、v4.0或v4.5。您可以在每个项目的
    属性
    应用程序
    选项卡中对此进行检查。不要使用客户配置文件变体
  • 在源代码中,删除生成的DLL(通常是bin和obj文件夹中的DLL),然后使用Visual Studio执行完整生成。这相当于重新生成(读取:先清理,然后生成)。然后,发布到web服务器
  • 冒着声明明显错误的风险,请确保在访问网站之前,您用于查看网站的web浏览器已清除其缓存
希望这有帮助

编辑:只是突然想到:如果是这样,那么您的代码更改可能不会被识别,因为“如果代码文件没有被引用,它就没有被编译。”


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

@SeanW-

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

2) 你有没有试过把你的整个网站吹走,然后从头复制出来?(尤其要确保删除并重新复制bin目录中的任何预编译文件。)

@Patrick-

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

2) 如果您的解决方案(不是启动项目)中有对依赖项目的修订,您是否单独手动重新生成这些依赖项目

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

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

一般应用程序缓存提示-

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

  • 如中所述,Global.asax更改、bin目录更改和App_代码更改也可能触发应用程序池的刷新

  • 作为一个长期的解决方案,您可能希望通过文件依赖关系或数据库管理应用程序缓存。(尽管最后一个建议在GoDaddy这样的共享托管网站上可能不起作用。)


重新打开解决方案同样有效。

ASP.NET Web应用程序有几个陷阱。重新加载项目是解决几个问题的一种方法。。。 真奇怪(叫我虫子)! 就我个人而言,我更喜欢特色。
FMO,这是一种更快、更容易、更简单的维护prj的方法

您是否尝试右键单击解决方案->清洁解决方案。重建?谢谢mahesh。但是重启IIS没有什么区别。失望-Visual Web Developer Express 2008没有“干净的解决方案”选项。试图重建,但不断得到各种错误,这使我走下了更多的死胡同。由于我通常不会在我们的网站上使用“构建”选项,我确信问题一定出在其他地方?你找到了解决方案吗?我也有同样的问题@Patrick,我在创建silverlight应用程序时遇到了类似的问题。我发现在AssemblyInfo.cs文件中增加AssemblyFileVersion可以解决我的问题。起初,这看起来像是一个浏览器缓存问题,弄清楚这一点确实让人困惑。这可能与你的问题无关,因为听起来你不像是共和党人