Web フォーム プロジェクトで Web API を使用しています。Global.asaxのプロジェクトのApplication_Start
メソッドに次のコードがあります。
GlobalConfiguration.Configuration.Routes.MapHttpRoute("ApiDefault", "api/{controller}/{id}", New With {.id = RouteParameter.Optional})
これは基本的に、件名に関する Microsoft のチュートリアルからコピーして貼り付けたものです。
という名前のテスト コントローラーもありますValuesController
。このクラスは、新しい項目の追加ウィザードからコントローラーを作成するときに取得する既定の Web API コントローラーにすぎず、次の名前の Web フォーム サイトのフォルダーにありますControllers
。
Imports System.Net
Imports System.Web.Http
Public Class ValuesController
Inherits ApiController
' GET api/<controller>
Public Function GetValues() As IEnumerable(Of String)
Return New String() {"value1", "value2"}
End Function
' GET api/<controller>/5
Public Function GetValue(ByVal id As Integer) As String
Return "value"
End Function
' POST api/<controller>
Public Sub PostValue(<FromBody()> ByVal value As String)
End Sub
' PUT api/<controller>/5
Public Sub PutValue(ByVal id As Integer, <FromBody()> ByVal value As String)
End Sub
' DELETE api/<controller>/5
Public Sub DeleteValue(ByVal id As Integer)
End Sub
End Class
ただし、に行くと、XML が文字列をhttp://localhost/api/Values
シリアル化するのではなく、次のようなエラー メッセージが表示されます。value1
value2
<Error>
<Message>No HTTP resource was found that matches the request URI 'http://localhost/api/Values'.</Message>
<MessageDetail>No type was found that matches the controller named 'Values'.</MessageDetail>
</Error>
つまり、404 を取得する代わりに、ルート自体が何にも解決されないというメッセージが表示されるため、ルーティングが機能していることは明らかです。しかし、ルートは何かに解決する必要があります。具体的には、ValuesController
という名前のフォルダーにある私のクラスControllers
です。
私が間違っていることを知っている人はいますか?
前もって感謝します。