2014年02月25日

なぜHTTP 400なのかわからなかった話

400.PNG

こんなやつが出て困ってました。
出てすぐに原因はなんとなくわかってはいました。
GetのURLが長すぎたんですね。

問題のURLはこんな感じ
http://localhost/controller/action/hogehogehogehogehoge・・・
actionメソッドに渡すパラメータが400文字くらいになってました・・・。


そんな長いのはGetするな、とみなさん思うと思いますし私もそう思います。
が、そうは言っていられないのがこの業界。

とりあえず設定で許可できる文字数を増やしてみよう、と思いました。
Asp.Net MVC + IISなのでWeb.configのhttpRuntimeをいじれば行けそうです。

maxUrlLengthのデフォルトは260のようなのでとりあえず4kくらいにしてみました。

が、相変わらず返ってくるのは400。
IISのhttperr見ても 「400 URL」みたいな出力だけ。


試行錯誤してたら、どうやらパラメータが長すぎるようだ、と。(常識?)
パラメータの中間くらいにスラッシュ(/)入れたら違うエラーになったし。(・∀・)

ということでルーティングを
"{controller}/{action}/{p}"
から
"{controller}/{action}/{p1}/{p2}"
に変更。

結局長くなったパラメータを二つに分けただけ、という行き当たりばったり的な変更で難を逃れようかな・・。

だれか正解おしえて・・


posted by ぷにお at 16:37 | Comment(0) | ASP.NET | このブログの読者になる | 更新情報をチェックする

2013年08月29日

SignalRの速度実験

自分用実験です。

私「(SignalR使おうと思っているので)サーバーはWindows Server 2012にした方が早いですよ」
他の人「どのくらい違うの?」
私「さぁ(∀`*ゞ)テヘッ」

というのが発端でした。
IIS8+SignalR → WebSocket使える → 早い
とかいう単純な考えでしたごめんなさい。

ということで、SignalRの通信手段を変えて転送速度のテストをしてみました。
環境は:Windows 8 + Visual Studio 2012
ローカルのIISに接続しての実験です。(通信経路は最速と考えていいのかな?)

テスト内容は、
・サーバーから120KByte位のデータを受信
・10MByteを超えるまで続ける
・かかった時間(秒)を表示
・上記を5回繰り返して平均求める
って感じ。かなり適当に作ってます。

結果は、

WebSocketの場合
webSocket.PNG


Forever-Frameの場合
foreveFame.PNG


Long-Pollingの場合
longPolling.PNG


Server-Sent-Eventsの場合
serverSentEvents.PNG



Server-Sent-Eventsはよくわかりません。
棄権ということにしときましょう。


やっぱWebSocket早いよね。
Long-Pollingの約10倍、Forever-Frameに対しても3倍以上の速度が出ました。
めでたしめでたし。

posted by ぷにお at 11:12 | Comment(0) | ASP.NET | このブログの読者になる | 更新情報をチェックする
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。