Пока я следую John Papa's excellent "SPA Jumpstart" course. Я дошел до того, что в учебнике, на котором протестирован контроллер громкоговорителей. На этом этапе мое приложение вернуло ошибку «404: Не найдено» вместо загрузки динамиков.Маршрутизация, не работающая для веб-api, добавлена в пустое веб-приложение
Если у вас есть что-то неправильно с speakerController, я сделал простой щелчок правой кнопкой мыши -> добавить элемент -> добавить контроллер веб-api и создать «valuesController» с помощью стандартных методов запуска. Это не сработало, я просто получил:
Request URL:http://localhost:57219/api/values
Request Method:GET
Status Code:404 Not Found
В инструментах разработчика Chrome.
Впоследствии я попытался с нуля с помощью базового проекта пустого веб-приложения, затем пошел в nuget и установил пакет Microsoft Wep Api. Затем я снова добавил «valuesController», но ничего. Затем я понял, что мне нужно сделать больше и добавила папку «App_Start», в которую я поместил файл под названием WebApiConfig.vb. Это содержало:
ИМПОРТНОГО 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 в моем проекте Jumpstart, я все еще не могу получить один и тот же URL-адрес, хотя все кажется мне идентичным в соответствующих файлах (global.asax и webApiConfig.vb).
Существует еще одна проблема с «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>
Вы подтвердили, что все пакеты в пакетах.Конфигурация папки моего модуля включена в ваш проект? –
@JohnPapa Да, Джон, конечно. Список идентичен. Включено в оригинальный вопрос для подтверждения сейчас. – TheMook
Хм. Это странно. Я вернулся к моему «тестовому» проекту vb, где я начал с веб-приложения и добавил бит, папку по папке и файл по файлу из моего проекта jumpstart. Теперь я нахожусь в положении, когда контроллеры все еще работают, и все файлы одинаковы, насколько я могу судить. Просто проверьте web.config, чтобы увидеть, заметно ли это. Я получаю ошибку на speakerController, но это ошибка на 500 серверов, относящаяся к типу «ObjectContent'1», не удалось сериализовать тело ответа для типа контента «application/xml; charset = utf-8». » и далее говорит о строке – TheMook