Так что я действительно борюсь с этим и прочесываю интернетов и пробовал все возможные предложения, которые я мог найти.Странные ошибки 405 против методов web api
У меня есть веб-проект api C# и веб-проект JS. При работе на местном уровне все работает нормально. Когда я публикую в Azure, я могу использовать методы api через консоль REST, и все работает нормально. Проблема заключается в том, что мое веб-приложение пытается совершать одни и те же вызовы по каждому методу (за исключением начального вызова токена) возвращает значение 405.
Я уже с помощью настроек CORS и web.config я не уверен, что требуется больше или нет ... он становится очень запутанным, но я попытаюсь вставить соответствующие биты здесь.
мои настройки web.config system.webServer
<modules>
<remove name="FormsAuthentication" />
<remove name="WebDAVModule"/>
</modules>
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
</customHeaders>
</httpProtocol>
<handlers>
<remove name="ExtensionlessUrlHandler-Integrated-4.0" />
<remove name="OPTIONSVerbHandler" />
<remove name="TRACEVerbHandler" />
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>
WebApiConfig.cs Регистрация метод
config.SuppressDefaultHostAuthentication();
config.Filters.Add(new HostAuthenticationFilter(OAuthDefaults.AuthenticationType));
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
И пример апи контроллер
[Authorize]
[Route("getall")]
[HttpGet]
public IHttpActionResult GetAll()
{
return Ok(PersonRepository.Get());
}
И в JS $http.get($rootScope.serviceBase + 'api/person/getall')
Итак, подведем итог ситуации здесь:
- При запуске локально звонки работают нормально
- при публикации в Azure, я могу сделать прямые вызовы остальных конечных точек тонких
- при публикации в лазури, мой JS возвращает 405 ошибок, не связанных с ошибками
- Если вместо этого я удаляю заголовок CORS из web.config и использую enableCors в моем методе Register, я не могу даже нажать/токен, вместо этого я получаю ошибки CORE для предполетания везде (хотя я все еще могу успешно сделать звонки с консоли отдыха), которая является исключительно запутанной
Обновления
Я пополняемый журнал материала, который я пытаюсь здесь:
- Добавлено
<add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" />
в customHeaders в WebConfig, никаких изменений
Было бы полезно, если вам объяснил, какие конкретные изменения вам пришлось внести. – xgp