2

/root/dnn のサーバーに dotnetnuke ポータルがあり、/root/app にアップロードする必要がある c# VS2008 で asp.net アプリを作成しています。

アプリを展開するときに、/root/app/bin ではなく /root/dnn/bin から dotnetnuke.dll アセンブリを参照する必要があります。

アプリファイルを /root/dnn に置かずに、どうすればそれを管理できますか?

自動更新パスを設定しようとしましたが、アップロード後に /root/app/bin/dotnetnuke.dll を削除して、アプリが ../dnn/bin/dotnetnuke.dll で欠落しているアセンブリを参照しようとしましたが、「アプリケーションはnot pre-compiled」というエラーが出るので、プリコンパイルせずにアップロードしてみましたが、やはりリファレンスが見つかりませんでした。

4

4 に答える 4

2

アプリに独自のコピーを与えてみませんか?それはすべての問題を解決するでしょう...

言い換えれば、なぜクロスアプリリファレンスなのか?IISとASP.NETのすべてのセキュリティメカニズムに反します

于 2009-07-22T11:28:57.123 に答える
2

Purple Antが上で言ったように、

  1. DotNetNuke アセンブリを GAC にロードします (後で DNN を XCOPY アップグレードできなくなるため、面倒です)。
  2. アプリを DNN アプリケーション フォルダーに配置します (あなたが行ったように聞こえます)。
  3. DNN dll をアプリ フォルダーにコピーします。(最も一般的な解決策)

あなたが考えているのは、<probing privatePath="" />構成ファイルの要素です。しかし、Web アプリで使用することはできず、(ドキュメントによると) サブフォルダーに対してのみ機能すると思います。

<configuration>
   <runtime>
      <assemblyBinding>
         <probing privatePath="bin;bin2\subbin;bin3"/>
      </assemblyBinding>
   </runtime>
</configuration>
于 2009-10-19T16:55:44.903 に答える
0

あなたがやろうとしていることに対するあなたの最善の策は、DotNetNuke.dllをサーバー上のGACにインストールすることだと思います。ASP.NET/IISが、現在のWebサイトのフォルダー構造外のアセンブリへのアクセスを許可するとは思わない。

于 2009-08-07T13:55:57.467 に答える
0

結局、ポータル フォルダーに .aspx および .aspx.cs ファイルをアップロードし、dnn の bin フォルダーに bin ファイルをアップロードし、web.config から dnn の web.config に数行を追加し、データベースへのクエリを次のように記述して変更する必要がありました。代わりにデータセット オブジェクト (.xsd、.xss ファイル) を使用してコードを記述します。C# と VS は dnn の App_Code で一緒にコンパイルできないため、アップロードする前に App_Code から .cs ファイルにコードをコピーする必要もありました。

于 2009-07-22T16:38:16.603 に答える