5

IISで実行されているC#Webサイトがあります。App_codeディレクトリの下に.csファイルがいくつかあります。すべての*.aspx.csファイルと*.ascx.csファイルでそれらを参照できます。Visual Studioを持っていないので、手動で変更する必要があります。

ここで、.aspx.csファイルのWebサービスを利用する必要があります。wsdl.exeを使用してプロキシクラスを生成し、App_codeディレクトリに配置しました。しかし、aspx.csファイル内のファイルを参照できません。エラーが発生します

コンパイラエラーメッセージ:CS0246:タイプまたは名前空間名'TestSearchProxy'が見つかりませんでした(usingディレクティブまたはアセンブリ参照がありませんか?)

プロキシには名前空間が定義されておらず、デフォルトの名前空間であると想定しています。aspx.csファイルに「using * 」を追加していません。

誰かがこの問題を解決する方法について私を助けることができますか?

私が試した別のアプローチは:

cscコマンドを使用してプロキシファイルからdllを生成し、そのdllをbinディレクトリに配置しました。まだプロキシクラスにアクセスできません。

4

1 に答える 1

3

最初の試みについて:

  • TestSearchProxyの名前空間を確認し、明示的に使用します:NameSpace.TestSearchProxy
  • それでも問題が解決しない場合は、生成されたプロキシコードから名前空間を削除してみてください。
  • asp.net tempディレクトリをワイプしてみてください。これにより、app_codeディレクトリが最初から再コンパイルされます。(IISのホットデプロイメカニズムは少し不安定なので、通常、これを最初に試します)
    1. IISサービスを停止します
    2. DEL / S "C:\ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ Temporary ASP.NETFiles*。*"
  • 特に、使用したwsdl.exeがターゲットプラットフォームに展開されているIIS / .netフレームワークよりも新しいフレームワークバージョンのものである可能性がある場合は、プロキシコードのコンパイルエラーを確認してください。

2回目の試行について(dllをbinディレクトリに配置):

  • それへの参照を追加する必要があります。これは、aspxWebサイトのルートディレクトリにあるweb.configファイルから行うことができます。

    <アセンブリ>

    <add assembly = "AssemblyName、Version = 1.0.0.0、Culture = neutral、PublicKeyToken = 123456789ABCD1" />

    </アセンブリ>

    または、GAC(gacutil -i dllname.dll)に追加するだけです。

  • また、dllが正しいバージョンの.netでコンパイルされ、正しいアーキテクチャ(x86 / x64)でコンパイルされていることを確認して、競合を回避する必要があります。これは古いシステムである可能性があるためです(4.0 clr / 32ビットのみ)。

于 2012-12-05T12:29:56.453 に答える