Asp.net 部署的aspx页面可以';t访问同一项目中的方法

Asp.net 部署的aspx页面可以';t访问同一项目中的方法,asp.net,Asp.net,我正在使用ASP.NET和VB以及.NET 3.5版。在这个项目中,我有一些实用函数,我从aspx页面和代码隐藏中的表达式调用它们。这一切在我的本地计算机上都可以正常工作,但当我部署到生产服务器时,在这些实用程序方法中的每一个方法上都会出现以下编译错误: BC30456: 'XXX' is not a member of 'String'. 其中XXX是在System.String上定义的扩展方法。我对此感到困惑的原因有很多: 既然我已经预编译了应用程序并将所有内容都放在bin目录中,那么AS

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

BC30456: 'XXX' is not a member of 'String'.
其中XXX是在System.String上定义的扩展方法。我对此感到困惑的原因有很多:

  • 既然我已经预编译了应用程序并将所有内容都放在bin目录中,那么ASP.NET为什么还要编译任何东西呢
  • ASP.NET知道函数在那里,因为它们在代码隐藏中工作。只有在aspx页面中使用时,我才有这个问题。(例如,如果我这样做:)
  • 这个方法是公开的,我用Reflector验证过
  • 我在web.config文件中导入了相关的名称空间,我可以看到这些名称空间是在ASP.NET对编译器的调用中导入的

  • 这到底是怎么回事?我真的需要访问这些实用程序功能,因为它们非常有用。

    在IIS中检查网站的.Net版本


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

    当我仔细查看一个示例时,所讨论的函数是一个Friend(c#中的内部函数),页面无法看到它们。所以我可能是在幻想这种方法是公开的。尽管如此,这还是需要注意的


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

    您是否使用扩展方法部署了dll?生产机器上有哪个.net framework?扩展方法与web应用程序位于同一个dll中,并且在AICT上正确部署。这个框架是v3.5。你说这个方法是公共的,那么它所在的类呢?您是否尝试在方法前面使用名称空间?有些像?它运行3.5,这应该是好的。我想我可以做一些测试,看看它是否能够看到编码为非扩展方法的相同方法。可能的值为1.0、1.1、2.0和4.0。版本3.5只是对2.0的补充。