問題タブ [request-uri]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
26 参照

c# - 最初のリクエストは期待どおりにコントローラーに到達しますが、同じリクエストを再度実行するとエラーが発生します: HTTP リソースがありませんでした (修正済み、根本的な原因は不明)

この特定のルーティング エラー メッセージに関する他のスレッドを無数に読みましたが、私の状況に関連するものはないようです。これが私のコードの単純化されたバージョンです:

リクエスト

コントローラーのサンプル

Get、Detetes、Put、および Post のコントローラーをセットアップしました。どのような HTTP 要求を呼び出しても、最初の要求はコントローラーに到達し、期待されるアクションを実行しますが、2 番目の要求はすぐに System.Web.Http で失敗します。

404: リクエストに一致する HTTP リソースが見つかりませんでしたhttp://request/com/api/v1/example

また、同じサーバーへの同じ呼び出しで 2 つの異なる要求 (つまり、Post と Get) を実行すると、同じことが起こることにも言及します。

最初の呼び出しが成功するため、コントローラーのルーティングは適切に設定されているようです。

どこを見るべきかについての指針を持っている人はいますか?2 つの呼び出しの間で、ルーティング データを変更する何かが発生している可能性はありますか?

助けてくれてありがとう!

アップデート

直ったけど原因不明!

問題の修正を見つけ、根本的な原因を半分理解しました。2 つのリクエストの RouteData が異なっていることに気付きました。下記参照:

上記のコードを実行すると、routeData と clonedRouteData の両方が RouteCollectionRouteData 型になることがわかりました。ただし、最初のリクエストを実行すると、routeDataAfterRequestOne と clonedRouteDataAfterRequestOneの両方が HttpRouteData 型を返します。

特に複製されたリクエストの場合、RouteDataが変更された理由はまだわかりませんが、変更されました。以下を実装することで問題を修正しました。

両方のリクエストで RouteData が更新された理由を誰かが知っている場合は、お知らせください。何が起こったのかをよりよく理解したいと思います。ありがとう!