Я пытаюсь заставить Web API работать с проектом VB Webforms (НЕ MVC / Core).
Мне удается заставить работать элементы GET, но все POST и другие глаголы приводят к 404 ошибки, и я не могу разобраться, что не так, и мне интересно, если у кого-то еще были такие же проблемы и они были решены?
Я использую. net 4.7.2, ASP. NET и VB
I global.asax У меня есть
<%@ Import Namespace="system.web.routing" %>
<%@ Import Namespace="System.Web.Http" %>
Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs)
' Configure Web API routing
GlobalConfiguration.Configure(Sub(config)
config.EnableCors() ' ADDED TO SEE IF CORS WAS ISSUE
config.MapHttpAttributeRoutes()
config.Routes.MapHttpRoute(name:="DefaultApi", routeTemplate:="api/{controller}/{id}", defaults:=New With {Key .id = System.Web.Http.RouteParameter.Optional})
End Sub)
End Sub
Это мой контроллер (app_code / controllers / testingcontroller.vb): -
Imports System.Collections.Generic
Imports System.Linq
Imports System.Net
Imports System.Net.Http
Imports System.Web.Http
Namespace RetroRentals
Public Class TestingController
Inherits ApiController
' Dummy data for now (would be from DB)
Private testing() As Testing = {
New Testing With {
.Id = 1,
.TestMake = "Ford",
.TestAge = 25,
.TestColour = "blue"
},
New Testing With {
.Id = 2,
.TestMake = "Fiat",
.TestAge = 31,
.TestColour = "red"
},
New Testing With {
.Id = 3,
.TestMake = "Audi",
.TestAge = 38,
.TestColour = "green"
}
}
<HttpGet>
<Route("api/Testing/GetAllTesting")>
Public Function GetTesting() As IEnumerable(Of Testing)
Return testing
End Function
<HttpPost>
<Route("api/Testing/PostTesting")>
Public Function PostTesting(ByVal testval1 As String) As String
Return String.Format("TESTVAL1={0}", (If(testval1 Is Nothing, testval1, "")))
End Function
End Class
End Namespace
В web.config я иметь: -
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Headers" value="accept, content-type" />
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Methods" value="POST, GET, OPTIONS" />
</customHeaders>
</httpProtocol>
Поэтому, если я пытаюсь протестировать API (я использую вещь, называемую бессонницей): -
http://localhost: 54281 / api / testing / getalltesting БУДЕТ работать и возвращать данные
http://localhost: 54281 / api / testing / PostTesting НЕ РАБОТАЕТ - ВСЕГДА 404 (не найден ресурс HTTP, соответствующий URI запроса ' http://localhost: 54281 / API / Testing / PostTesting '.)
Заранее спасибо