5

私はMVC4プロジェクトを持っており、/ QRCode / address/amountのようなURLでそれを機能させようとしています。宣言方法は次のとおりです。

ルート:

routes.MapRoute(
    name: "QRCode",
    url: "QRCode/{address}/{amount}",
    defaults: new { controller = "QRCode", action = "Index" }
);

コントローラ:

public class QRCodeController : Controller
{
    public ActionResult Index(string address, double amount)
    {
         ...

問題は:

URLが:の場合QRCode/address1/33、すべて正常に機能しますが、次のように2番目のパラメータにドットがある場合QRCode/address1/33.33、「HTTPエラー404.00-見つかりません」というメッセージが表示されます。

2番目のパラメーターを文字列として再宣言すると、同じ結果が得られます。

ドットの代わりに%2Eを使用すると、同じ結果が得られます

誰かがここで何が起こっているのか知っていますか?私はそれがMVC3でうまく機能したことを知っています

4

3 に答える 3

7

これが IIS 7 にある場合は、これを構成ファイルに追加すると、正常に動作するはずです。

<system.web>
     <httpRuntime relaxedUrlToFileSystemMapping="true" />
</system.web>
于 2012-12-16T19:58:02.807 に答える
6

はい...コメントを参照してください。ハンドラのマッピングに問題がありました。

URL を QRCode/address1/33.33 から QRCode/address1/33.33/ に変更したところ、マッピングは正常に機能しました

于 2012-12-16T19:43:16.320 に答える
0

別のオプションがあります: 金額をマップせずに、名前付きの URL パラメーターとして渡します。

routes.MapRoute(
    name: "QRCode",
    url: "QRCode/{address}",
    defaults: new { controller = "QRCode", action = "Index" }
);

このような URL で API を呼び出します。

http://<server>/QRCode/address1?amount=33.33
于 2014-06-27T17:59:29.843 に答える