2

私は ASP.net Web サイトを持っています。フォルダーには、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フォルダー内のサブフォルダー内のクラスが正しく見つからないのはなぜですか?

web.configのコンパイル要素にcodeSubDirectoriesを追加する必要があります

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

拡張メソッドパラメータに「this」を追加しましたか?クラスとメソッドはpublicstaticですか?コードを見ずに、私はここで暗闇の中で刺しているだけです。

私が正しく思い出せば、あなたの最初の引数は拡張されている型でなければなりません。

于 2012-07-18T21:36:53.200 に答える