0

SimpleMvcCaptcha を使用しています。私の環境にはさまざまな領域があります。このキャプチャをさまざまな場所でさまざまな形で使用したいと考えています。

このモジュールには、Captcha という名前のコントローラーとその中に 1 つのメソッドが必要です。このコントローラーを使用しているのと同じ領域に作成しても問題はありませんが、別の領域で使用すると、次のエラーが発生します。

 The controller for path '/AreaName/Captcha/GetImage/15fe4de1-fd46-4f2f-a0d1-74c397bd8365' could not be found.

どうすればこの問題を解決できますか? この問題を解決できると思う1つの方法は、次のようなルート登録でエリアを削除することです

  routes.MapRoute(
           "Default_Captcha",
            "AreaName/Captcha/{action}/{id}",
            new { area = string.Empty, controller = "Captcha", action = "GetImage", id = UrlParameter.Optional });

しかし、私はまだ同じエラーが発生しています。

リンクから地域名を削除する方法はありますか?

- - アップデート

キャプチャには、その操作用のコントローラーが必要です (キャプチャー画像を取得するための 1 つのメソッドを備えたコントローラー)。

MyAreaに実装されている形で利用したい。このフォームは、MyController というコントローラーに関連しています。

この領域に必要なコードを含む CaptchaController を作成すると、captcha は正常に機能します (Captcha 画像が表示されます)。

ここで、別の領域 (MyArea2) があり、この領域に MyController2 というコントローラーがあり、この領域にも新しい Captcha コントローラーが必要であるとします。そうしないと、画像が表示されません。

画像が表示されないため、CaptchaController を市外局番以外のセクションに移動できません。

Captcha 画像への URL は次のとおりです (MyController に関連するビューで使用される Captcha の場合):

http://mySite/MyArea/Captcha/GetImage/xxxxxxxxxxxx

Captcha 画像への URL は次のとおりです (MyController2 に関連するビューで使用される Captcha の場合):

http://mySite/MyArea2/Captcha/GetImage/xxxxxxxxxxxx

キャプチャ コントローラーを非エリア セクションに移動すると、上記の URL が機能せず、画像が表示されません。

これらの URL を次の URL に再ルーティングできれば、機能するはずです (非エリア セクションに 1 つの Captcha コントローラーを配置できます)。

 http://mySite/Captcha/getImage/xxxxxxxxxxxxxxxxxxx

これどうやってするの?

4

1 に答える 1

0

CaptchaController がエリア固有でない場合、おそらくエリア内にあるべきではありません。これをメインの Controllers ディレクトリに移動して名前を変更すると、グローバルにアクセスできるようになります。

何らかの理由でそれを行いたくない場合は、グローバルな場所からアクションに直接マップする優先順位の高いルートを登録できます。定義したルートの問題は、コントローラーの領域をパラメーターとして指定していないことですが、URL 自体でのみ指定しているようです。ただし、ルーティングをデバッグするのは少し難しいです。(1) サンプル ルートを追加または削除しているかどうかが明確でないため、(2) サンプル ルートの前後にどのルートが登録されているかがわからないためです。 (3) AreaName のあいまいさは、マッピングが機能するエリアか機能しないエリアかを判断できないため、混乱を招きます。

于 2012-05-16T22:56:01.230 に答える