Web API с ошибкой VB Webforms 404 на POST, но GET работает отлично - PullRequest
0 голосов
/ 18 марта 2020

Я пытаюсь заставить 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 '.)

Заранее спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...