Mohamed Sultan Ответов: 1

Проблема в контроллерах web api


ПРИВЕТ,
Я работаю в проекте web api с использованием Visual studio 2017 на языке VB
Я создал несколько контроллеров, и они прекрасно работают на моем компьютере и в интернете,
затем я создал новые контроллеры, используя тот же код, что и старые, и они прекрасно работают на моем компьютере, но когда я звоню им с хостинга онлайн, я получаю ответ 404 "не найден тип, соответствующий названному контроллеру"

Что я уже пробовал:

пример рабочего контроллера:
Imports System.Web.Http

Namespace Controllers
    Public Class BanksController
        Inherits ApiController

        Dim Table As String = "Banks"
        ' GET: api/Banks
        Public Function GetValues() As Object
            Return SqlToJson("SELECT BankId, BankName FROM " & Table)

        End Function

        ' GET: api/Banks/5
        Public Function GetValue(ByVal id As Integer) As Object
            Return SqlToJson("SELECT BankId, BankName FROM " & Table & " Where BankId = " & id)
        End Function

        ' POST: api/Banks
        Public Function PostValue(<FromBody()> ByVal value As Object) As Object
            Return InsertFromJson(value, Table)
        End Function

        ' PUT: api/Banks/5
        Public Function PutValue(ByVal id As Integer, <FromBody()> ByVal value As Object) As Object
            Return UpdateFromJson(value, Table, " Where BankId = " & id)
        End Function

        ' DELETE: api/Banks/5
        Public Function DeleteValue(ByVal id As Integer) As Object
            Return DeleteRecord(Table, " Where BankId = " & id)
        End Function

    End Class

End Namespace


пример контроллера, который отвечает с помощью 404
Imports System.Web.Http

<pre lang="vb">Namespace Controllers
    Public Class BuildingsController
        Inherits ApiController

        Dim Table As String = "Buildings"
        ' GET: api/Buildings
        Public Function GetValues() As Object
            Return SqlToJson("SELECT * FROM " & Table)

        End Function

        ' GET: api/Buildings/5
        Public Function GetValue(ByVal id As Integer) As Object
            Return SqlToJson("SELECT * FROM " & Table & " Where BuildingId = " & id)
        End Function

        ' POST: api/Buildings
        Public Function PostValue(<FromBody()> ByVal value As Object) As Object
            Return InsertFromJson(value, Table)
        End Function

        ' PUT: api/Buildings/5
        Public Function PutValue(ByVal id As Integer, <FromBody()> ByVal value As Object) As Object
            Return UpdateFromJson(value, Table, " Where BuildingId = " & id)
        End Function

        ' DELETE: api/Buildings/5
        Public Function DeleteValue(ByVal id As Integer) As Object
            Return DeleteRecord(Table, " Where BuildingId = " & id)
        End Function

    End Class
End Namespace

Mohamed Sultan

Система Импорта.Нет.Протоколу HTTP.Заголовки
Система Импорта.Веб.Протокол HTTP
Система Импорта.Веб.Протоколу HTTP.Коров

Публичный Модуль WebApiConfig
Общественные суб регистрации(как byval config как HttpConfiguration)
"Конфигурация и сервисы веб-API
конфиг.EnableCors(Новая Нем("*", "*", "*"))
- Маршруты веб-API
конфиг.MapHttpAttributeRoutes()

конфиг.Маршруты.MapHttpRoute(имя:="ControllersApi", routeTemplate:="АПИ/{контроллера}/{ИД}", по умолчанию:=новая с {.ИД = RouteParameter.Необязательный})

-конфиг.Маршруты.MapHttpRoute(
название: "ControllersApi",
'routeTemplate: "api/{controller}/{action}/{id}",
'по умолчанию: New { id = RouteParameter.Необязательный }
');

конфиг.Форматеры.JsonFormatter.SupportedMediaTypes.Add(New MediaTypeHeaderValue("text/html"))

Конец Подводной Лодки
Конечный Модуль

1 Ответов

Рейтинг:
0

raddevus

Я предполагаю, что вы не переместили свой каталог \Controllers на веб-сайт развертывания. Или папка просто находится не в правильном пути. Это всего лишь предположение, но оно может привести вас к ответу. Удачи.


Mohamed Sultan

это было что-то близкое к этому, когда я публикую непосредственно из Visual Studio не все файлы загружаются, поэтому я опубликовал их в локальной папке на своем жестком диске, а затем загрузил публикацию FileZilla, и она работала нормально!