1

シンプルな Web API プロジェクト (ASP.NET MVC) があります。プロジェクトを IIS のサブフォルダーにデプロイする必要があります。たとえば、サイトhttp://TestSite/ があり、プロジェクトを にデプロイする必要があるとしhttp://TestSite/MyProject/ます。私がやったとき、Web APIルーティングが機能しなくなりました。私の ajax 呼び出しはメイン サイト - にルーティングされるためhttp://TestSite/api/something/getです。

次の方法でマップ ルーティングを更新しようとしました。

routeTemplate: "MyProject/api/{controller}/{id}",

しかし、それは私が望むようには影響しません。ASP.NET MVC での Web API コントロール ルーティングのいくつかのプラクティスについて、どこで読むことができますか?

4

1 に答える 1

2

とてもシンプルでした。ルーティングで何もする必要はありませんでした。JavaScriptでURLを変更する必要がありました。

から:

$.getJSON('/api/Category', function (data) {

に:

$.getJSON('api/Category', function (data) {

「api」の前の「/」記号を削除するだけです。注意してください。

ところで、ASP.NET Web API のデバッグに関する素晴らしい記事 - Debugging ASP.NET Web API with Route Debugger

編集:私が以前に書いたことを忘れてください(BTWセクションの代わりに)。これはうまくいきません。には機能しhttp://TestSite/MyProject/ますが、には機能しませんhttp://TestSite/MyProject/MyController/Index。過去の ASP.NET MVC プロジェクトでこのような問題に遭遇しました。そして、Urlヘルパーの使用を開始して解決しました@Url.Action("MyAction","MyController")。そのため、Web Api のようなものが必要でした。そして、私はそれを見つけました。UrlHelper.HttpRouteUrlメソッドです。これで、私のコードは次のようになります。

$.getJSON( "@Url.HttpRouteUrl("DefaultApi",new {controller = "Category"})", function (data) {

どこ:

  • DefaultApi - 私のデフォルト rote の名前。
  • カテゴリ - API コントローラーの名前。

このソリューションはエレガントに見えませんが、機能します。

于 2013-04-24T08:58:24.073 に答える