2016-09-30 6 views
1

私はproject.Allに正しいルートを追加しますが、最初のparamとして正常なURLを送ると正しく動作しません。URLパラメータをルーティングするにはどうすればよいですか?

Get["/{url}/{digit}" 

このパラメータをserver-allに送信すると正しく動作します。

localhost:8888/google.com/2 

しかし、私はhttp://wwwでパラメタを送信しても動作しません。

localhost:8888/https://www.google.com/2 

どのように正しいパスURLパラメータがルーティングされますか? Nancy3入力パラメータを送ってくると思いますので、私は思っています。

答えて

1

POSTの代わりにGETを使用する必要がある場合は、URLをurlencodeするのにHttpUtility.UrlEncode("https://google.com/2")を試してください。

+0

経路を変更する方法は? –

+0

あなたは ''/{url}/{digit}/{digit2} ''のようなものを試しましたか? –

1

あなたがのparamaterとして送信され、あなたのURLエンコードする必要があります。
使用を:

var encodedString = Uri.EscapeDataString("https://www.google.com/2"); 

その後、あなたのURLは次のようになりますと、それはすべてのエラーを取得するべきではありません。

リクエストを送信するHTTPS%3A%2F%2Fwww.google.com%2F2

はlocalhost:8888/HTTPS%3A%2F%2Fwww.google.com%2F2

またはOU

HttpUtility.UrlEncode(); 

方法を使用することができます。詳細はthisをご覧ください。

+0

私はそれを試してみてください –

+0

私はそれを試してみてください。働かない –

0

あなただけのバックエンドを変更することを主張しているので、あなたはあなたのルートをキャプチャするために正規表現を使用して試みることができる

Get["^(?<url>.*<digit>[0-9]+)$"] 

これは、少なくとも1つの番号で終わるすべてのURLと一致し、そのようなURLでその前にすべてを置く必要があります:

Get["^(?<url>.*<digit>[0-9]+)$"] = parameters => 
    { 
     var url = parameters.url; 
     var digit = parameters.digit; 
    }; 

私はあなたががそれがしたいと、これが動作するかどうかを確認するために、そして自分が正規表現書き方に見ていることを確認してくださいあなたがこれを調整できることを確認し、現在ができません

関連する問題