0

言語としてC#を使用して.NET3.5で記述されたアプリケーションがあります。Webフォームを使用していますが、グローバルファイルで定義されたルートでURLルーティングを使用しています。すべてが期待どおりに機能しています。きれいなパス(user.aspx?uid=665の代わりにuser/665を参照)が正しく機能するために、IIS5.1(ローカルボックス、テスト、ステージング、または本番環境ではない)にワイルドカードマッピングを追加する必要がありました。 2.0フレームワークのaspnet_isapiファイル。すべてが正常に動作します。

今、私のサイトにはPHP用のプラグインが必要です。ただし、ワイルドカードマッピングにより、PHPファイルは現在ASP.NETによって処理されているため、PHPインタープリターによって処理されません。これを回避する方法はありますか?ASP.NETフレームワークによって処理されているすべてのPHP要求を受け取り、それらをPHPエンジンにルーティングする、ある種のハンドラーをWebアプリに追加する必要がありますか?もっと簡単な方法はありますか?たぶん、web.config(PHPファイル)でそれらを除外し、適切なPHPエンジンでそれらを提供する方法はありますか?

皆さんありがとう!-スティーブ

4

3 に答える 3

1

これは解決策ですが、エレガントな方法ではありません(IMHO):

  1. 仮想ディレクトリを作成する
  2. ファイルのあるフォルダーを指すようにします (この場合は、PHP プラグイン)。
  3. 適切な権限を与えます
  4. IIS で仮想ディレクトリの構成オプションを変更し、そのディレクトリのワイルドカード マッピングが削除されていることを確認します。

これは私の状況では魅力のように機能します。ただし、仮想ディレクトリを処理する必要がない方法はありますか?

于 2009-12-08T17:57:37.147 に答える
0

問題は、PHP拡張機能を登録する必要があることです。

  1. IISマネージャーで、[既定のWebサイト]->[プロパティ]->[ホームディレクトリ]->[構成]を右クリックします。
  2. [アプリケーションマッピング]で、.phpが追加され、PHP.EXEを指していることを確認します。次のようなエントリが必要です:拡張子.php、実行可能パスC:\ PHP \ PHP.EXE%s%s
于 2009-12-08T17:38:54.877 に答える
0

私が収集したところによると、問題はASP.NETがPHP要求をルーティングしようとしていることです。そのため、global.asaxのルートにStopRoutingHandler()を追加します。このようなものが機能するはずです:

routes.Add(new Route("{resource}.php/{*pathInfo}", new StopRoutingHandler()));

編集:ルートは順番に処理されることに注意してください。これをルートの先頭に追加します。

于 2009-12-08T17:40:31.300 に答える