2

我有 ASP.net 网站。在App_Code文件夹中,我有具有扩展方法的类。从 Visual Studio 运行此站点时,一切正常。但是在我的 IIS 7 服务器上,我收到以下错误:

CS1061:“System.Data.SqlClient.SqlDataReader”不包含“SafeGetString”的定义,并且找不到接受“System.Data.SqlClient.SqlDataReader”类型的第一个参数的扩展方法“SafeGetString”(您是否缺少使用指令还是程序集引用?)

但包含此扩展方法的文件位于 App_Code 文件夹中。我错过了什么重要的东西吗?

扩展方法类:

public static class ExtentionMethods
{
    public static string SafeGetString(this SqlDataReader reader, int colIndex)
    {
        if (!reader.IsDBNull(colIndex))
            return reader.GetString(colIndex);
        return "NULL VALUE";
    }

    public static int SafeGetInt32(this SqlDataReader reader, int colIndex)
    {
        if (!reader.IsDBNull(colIndex))
            return reader.GetInt32(colIndex);
        return -1;
    }

    public static DateTime SafeGetDateTime(this SqlDataReader reader, int colIndex)
    {
        if (!reader.IsDBNull(colIndex))
        {
            try
            {
            }
            catch
            {
                return new DateTime(1800, 1, 1);
            }
        }
        return new DateTime(1800, 1, 1);
    }
}
4

2 回答 2

2

感谢@AnthonyWJones:为什么没有正确找到我的 App_Code 文件夹中子文件夹中的类?

您需要将 codeSubDirectories 添加到 web.config 中的编译元素

<configuration>
    <system.web>
      <compilation>
         <codeSubDirectories>
           <add directoryName="Extensions"/>
         </codeSubDirectories>
      </compilation>
   </system.web>
</configuration>
于 2012-07-18T21:59:24.740 回答
0

您是否将“this”添加到您的扩展方法参数中?类和方法是公共静态的吗?没有看到代码,我只是在这里在黑暗中刺伤。

如果我没记错的话,你的第一个参数必须是被扩展的类型。

于 2012-07-18T21:36:53.200 回答