有关异常的Stack Overflow有几个问题,但它们似乎都不涉及运行时编译.aspx文件,并且所提出的解决方案都不适用于我。
我有一个网络应用程序,截至昨天下午编译并运行得很好。当我今天早上再次开始处理它时,我突然开始在运行时收到异常,当IIS尝试编译有问题的.aspx页面时。 (类型名称已被更改以保护无辜者。)
c:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Temporary ASP.NET Files \ MyWebApp \ bdb24adf \ eb592999 \ App_Web_MyPage.aspx.cdcab7d2.gibiyx2g.0.cs(148):错误CS0012:类型' MyType'在一个程序集中定义 没有引用。您必须添加对assembly' MyAssembly的引用, 版本= 40.0.0.30,文化=中立,PublicKeyToken = 7ca3fb5049101832
我可以通过在web.config中添加程序集引用来消除此异常,但我不应该这样做。根据{{3}}堆栈溢出问题,您需要在配置文件中添加程序集引用的唯一时间是在ASP.Net应用程序中部署未编译的.cs代码文件。
由于昨天一切正常,因此.aspx文件和此页面的代码隐藏文件都没有改变。自昨天下午以来,Web.config文件中的任何内容都没有变化。
如果没有在设计时更改引用属性或修改web.config,我该怎么做才能让这个虚假的例外消失呢?
更新
在GAC中安装了定义MyType
的程序集,自从我第一次尝试找出问题以来,我已多次确认。
更新
我终于磨练了导致异常的确切更改。我试图查看的.aspx页面和抛出异常的页面有一个代码隐藏类,它继承自定义基页类。
public class MyPageClass : MyBasePageClass
我向MyBasePageClass
添加了以下方法,当注释掉时,该异常消失:
protected T CreatePartyPlaceholder<T>(T owner) where T : Party, new()
{
return new T { TemporaryId = owner.TemporaryId };
}
有几个其他现有方法引用Party
类,但这个新方法是唯一一个使用该类作为泛型类型约束的方法。