部署的aspx页面无法访问同一项目中的方法

时间:2010-11-29 15:23:28

标签: asp.net

我在VB和.NET 3.5版中使用ASP.NET。在项目中,我有一些实用程序函数,我从aspx页面中的表达式以及后面的代码中调用。这一切都可以在我的本地机器上正常工作,但是当我部署到生产服务器时,我在每个实用程序方法上都会出现这个编译错误:

BC30456: 'XXX' is not a member of 'String'.

其中XXX是在System.String上定义的扩展方法。由于种种原因,我对此感到困惑:

  1. 为什么ASP.NET会编译任何内容,因为我已经预编译了应用程序并将所有内容放在bin目录中。
  2. ASP.NET知道函数在那里,因为它们在后面的代码中工作。只有在aspx页面中使用时我才会遇到这个问题。 (例如,如果我这样做:<%=“字符串为XXX-ify”.XXX())%>)
  3. 此方法 公开,我使用Reflector验证。
  4. 我在web.config文件中导入了相关的命名空间,我可以看到这些命名空间是在ASP.NET对编译器的调用中导入的。
  5. 这到底是怎么回事?我真的需要访问这些实用程序函数,因为它们非常有用。

2 个答案:

答案 0 :(得分:0)

检查IIS中的.Net版本。

这可能设置为不支持扩展方法的版本。

答案 1 :(得分:0)

当我仔细观察一个例子时,有问题的函数是朋友(c#内部),页面看不到它们。所以也许我对公开的方法产生了幻觉。不过,这是需要注意的事情。

我想我并不完全理解ASP.NET中的编译系统,但是可能页面被编译成代码模块的单独程序集,因此如果你想让它工作,这些函数必须是公共的。