The type or namespace name 'Zhaopin' does not exist in the namespace 'LMSoft' 问题的解决

今天,由于我随手改了几个cs命名空间的名称。原来是LMSoft.Zhaopin,改为了LMSoft.Web。这是因为我的项目名称已经改为LMSoft.Web。原来的项目名称是LMSoft.Zhaopin。谁知编译后打开后台一个页面却出现了下面的错误:

c:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\root\43510009\83735f89\App_Web__popupmodal.cshtml.909e1be.ai6jub48.0.cs(28): error CS0234: The type or namespace name 'Zhaopin' does not exist in the namespace 'LMSoft' (are you missing an assembly reference?)

由于这种提示是临时文件出现的问题。我以为是缓存。然后把c:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files底下的文件全删除了,还是有此问题。而且奇怪的是,后台有些页面有这个问题,有些页面没这样得问题。都是在cshtml文件上出的这个问题。后来我按照错误提示,打开popupmodal.cshtml这个文件。里面什么引用也没有。当时就懵了。这是怎么个情况。后来想了个笨办法,就是解决方案中的文件全部搜索,寻找LMSoft.Zhaopin,还真找到几个。其中在网站Views目录下的web.config也找到了相应的引用:

<pages pageBaseType="System.Web.Mvc.WebViewPage">
      <namespaces>
        <add namespace="System.Web.Mvc" />
        <add namespace="System.Web.Mvc.Ajax" />
        <add namespace="System.Web.Mvc.Html" />
        <add namespace="System.Web.Optimization"/>
        <add namespace="System.Web.Routing" />
        <add namespace="LMSoft.Zhaopin" />
      </namespaces>
    </pages>
可是改掉后问题依旧。又找到几个这样得引用,但是改后都没什么效果。弄着弄着vs出现一个致命问题,这个问题几乎每天都要出现一次。就是点击某个目录或文件的时候就会出现,一出现。vs就停止工作。只能重启vs。这次又出现,我也怀疑是不是需要重启计算机,因为有时清理缓存也不行。需要重启电脑。于是就重启了下。但是重启后,打开网站首页也出现这个问题了。原来是没有的。

这次我点开了Show Complete Compilation Source详细的堆栈跟踪,发觉点有意思的现象。其中命名空间加载自上而下有几个这样得:

Line 12:   namespace ASP {
Line 13:       using System;
Line 14:       using System.Collections.Generic;
Line 15:       using System.IO;
Line 16:       using System.Linq;
Line 17:       using System.Net;
Line 18:       using System.Web;
Line 19:       using System.Web.Helpers;
Line 20:       using System.Web.Security;
Line 21:       using System.Web.UI;
Line 22:       using System.Web.WebPages;
Line 23:       using System.Web.Mvc;
Line 24:       using System.Web.Mvc.Ajax;
Line 25:       using System.Web.Mvc.Html;
Line 26:       using System.Web.Optimization;
Line 27:       using System.Web.Routing;
Line 28:       using LMSoft.Zhaopin;


我猛然觉得在哪里似乎见过。后来想到是在web.config中。我看了下web.config中命名空间的顺序,和这个出错地方一样。难道是在加载页面的时候每个页面都要加载这些命名空间?觉得有可能。我把LMSoft.Zhaopin改为LMSoft.Web,这次首页没这个错误了。而且后台其他页面也没这个错误了。由于我知道网站底下有几个web.config文件。其中根目录下有一个。每个views目录下有一个,我又找了下,其中在网站根目录下的views目录中有LMSoft.Zhaopin,在areas目录下的views目录下也有个web.config。这两个都有这个namespaces节点。但是我发现根目录下没这个节点。后来又仔细看了namespaces节点的父节点。发觉是来自<system.web.webPages.razor>,那这应该是在cshtml文件加载的时候需要预加载这里面的命名空间的。

我又把这两个web.config文件中的LMSoft.Web改为LMSoft.Zhaopin,但是并没有出现这样得编译提示:

Server Error in '/' Application.

Compilation Error

Description: An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately. 

Compiler Error Message: CS0234: The type or namespace name 'Zhaopin' does not exist in the namespace 'LMSoft' (are you missing an assembly reference?)

Source Error:

 
Line 26:     using System.Web.Routing;
Line 27:     using System.Web.Optimization;
Line 28:     using LMSoft.Zhaopin;
Line 29:     
Line 30:     

这说明是有缓存的。当正确的时候它会一直缓存。我想是不是需要重启才能解决此问题。就都改为LMSoft.Zhaopin,然后重启,仍然不出现错误提示。那说明不是需要重启解决的。我又删除了c:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files临时目录下的所有文件。打开网站首页,出现了像上面的错误提示。然后我更改了网站根目录下的views文件夹下的web.config。这次首页正确了。然后登录后台,因为后台是在areas目录下。它有单独的views目录。这次发行,后台也有这样得错误。然后我更改后台的views目录下的web.config文件。这次没错了。

总结下:

出现这种错误需要更改相应mvc views目录下的web.config文件。这种更改不需要重启电脑就能起作用。但是与Temporary ASP.NET Files下的缓存文件有关。一旦网站能正常浏览,再次把web.config文件的域名更改为错误,它不会即时起效。需要等缓存文件失效后才会报错



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值