John Papa の優れた「SPA Jumpstart 」コースをたどりながら、スピーカー コントローラーをテストするチュートリアルのポイントにたどり着きました。この時点で、アプリはスピーカーをロードする代わりに「404: Not found」エラーを返しました。
SpeakerController に何か問題があった場合は、単純な右クリック -> 項目の追加 -> Web API コントローラーの追加を行い、標準の起動メソッドだけで「valuesController」を作成しました。それもうまくいきませんでした。
Request URL:http://localhost:57219/api/values
Request Method:GET
Status Code:404 Not Found
Chrome の開発ツールで。
その後、基本的な空の Web アプリケーション プロジェクトを使用してゼロから再試行し、nuget に移動して Microsoft Wep Api パッケージをインストールしました。次に、「valuesController」を再度追加しましたが、まだ何もありません。その後、さらに多くのことを行う必要があることに気付き、WebApiConfig.vb というファイルを配置する "App_Start" フォルダーを追加しました。これには以下が含まれていました:
System.Web.Http をインポートします。
Public Class WebApiConfig
Public Shared Sub Register(config As HttpConfiguration)
config.Routes.MapHttpRoute( _
name:="DefaultApi", _
routeTemplate:="api/{controller}/{id}", _
defaults:=New With {.id = RouteParameter.Optional} _
)
End Sub
End Class
そして、次を含む「global.asax」ファイルを追加しました。
Imports System.Web.SessionState
Imports System.Web.Http
Public Class Global_asax
Inherits System.Web.HttpApplication
Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs)
WebApiConfig.Register(GlobalConfiguration.Configuration)
End Sub
End Class
これを行った後、基本的なルーティングが機能し、そのコントローラーのデフォルト ページに正常に移動できました。
ただし...ジャンプスタートプロジェクトでWeb APIパッケージをアンインストールして再インストールしても、関連ファイル(global.asaxおよびwebApiConfig.vb)ですべてが同一であるように(私には)見えても、同じURLにアクセスできません)。
"scripts/css" やその他の js ファイルが index.vbhtml ページでレンダリングされないという別の問題がありますが、"...api/speakers " または "...api/values" をテストするため、インデックス ページをバイパスします。
Web API パッケージ以外は何もいらないはずですよね? global.asax および webapiconfig.vb ページにブレークポイントを配置しましたが、ヒットすることはありません。ただし、デバッガーが接続されるまでに、それらは既に完了していると思います。私は今どこを見るべきか完全に迷っています。ルーティングを妨害する可能性のある他のファイルは存在しないはずですよね?
私のpackages.configファイル:
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Durandal" version="1.2.0" targetFramework="net45" />
<package id="EntityFramework" version="5.0.0" targetFramework="net45" />
<package id="EntityFramework.SqlServerCompact" version="4.3.6" targetFramework="net45" />
<package id="FontAwesome" version="3.0.2.3" targetFramework="net45" />
<package id="jQuery" version="1.9.1" targetFramework="net45" />
<package id="knockoutjs" version="2.2.1" targetFramework="net45" />
<package id="Microsoft.AspNet.Razor" version="2.0.20715.0" targetFramework="net45" />
<package id="Microsoft.AspNet.Web.Optimization" version="1.0.0" targetFramework="net45" />
<package id="Microsoft.AspNet.WebApi" version="4.0.20710.0" targetFramework="net45" />
<package id="Microsoft.AspNet.WebApi.Client" version="4.0.20710.0" targetFramework="net45" />
<package id="Microsoft.AspNet.WebApi.Core" version="4.0.20710.0" targetFramework="net45" />
<package id="Microsoft.AspNet.WebApi.WebHost" version="4.0.20710.0" targetFramework="net45" />
<package id="Microsoft.Net.Http" version="2.0.20710.0" targetFramework="net45" />
<package id="Microsoft.SqlServer.Compact" version="4.0.8876.1" targetFramework="net45" />
<package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net45" />
<package id="Modernizr" version="2.6.2" targetFramework="net45" />
<package id="Newtonsoft.Json" version="4.5.11" targetFramework="net45" />
<package id="SqlServerCompact" version="4.0.8854.1" targetFramework="net45" />
<package id="toastr" version="1.2.2" targetFramework="net45" />
<package id="Twitter.Bootstrap" version="2.3.1" targetFramework="net45" />
<package id="WebGrease" version="1.1.0" targetFramework="net45" />
</packages>