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


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


但是包含此扩展方法的文件位于App_Code文件夹中。我缺少重要的东西吗?

ExtentionMethods类:

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);
    }
}

最佳答案

感谢@AnthonyWJones:How come classes in subfolders in my App_Code folder are not being found correctly?

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

<configuration>
    <system.web>
      <compilation>
         <codeSubDirectories>
           <add directoryName="Extensions"/>
         </codeSubDirectories>
      </compilation>
   </system.web>
</configuration>

关于c# - 找不到扩展方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11550717/

10-13 06:04