none
Probelma com AngularJS e WebApi RRS feed

  • Pergunta

  • Bom dia pessoal estou fazendo um tutorial do nosso amigo Macoratti sobre AngularJs usando WebApi e Entityframewor, este é o link do tutorial. Estava indo bem até integrar o angularjs no projeto primeiro criamos o serviço e inserimos o entityframework foi usado o migrations para atualizar a tabela, e quando testei o serviço estava funcionando tudo ok, depois criei uma pasta chamada "AngularApp" e dentro outra pasta chamada "js" dentro desta pasta criei dois arquivos um para ser o modelo e outro para ligar o controller com o modelo ai que começou a dar o erro quando abro o browser para testar não carrega a não traz os dados da tabela ele aparece no console do browser o seguinte erro ""GET <abbr style="box-sizing:border-box;border-bottom:1px dotted;" title="Hypertext Transfer Protocol">http</abbr>://localhost:60731/api/filmes/ 500 (Internal Server Error)" e quando testo o serviço aparece esse ero abaixo:

    <Error>
    <Message>An error has occurred.</Message>
    <ExceptionMessage>
    No OWIN authentication manager is associated with the request.
    </ExceptionMessage>
    <ExceptionType>System.InvalidOperationException</ExceptionType>
    <StackTrace>
    em System.Web.Http.Owin.PassiveAuthenticationMessageHandler.SuppressDefaultAuthenticationChallenges(HttpRequestMessage request) em System.Web.Http.Owin.PassiveAuthenticationMessageHandler.<SendAsync>d__0.MoveNext() --- Fim do rastreamento de pilha do local anterior onde a exceção foi gerada --- em System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) em System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) em System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() em System.Web.Http.HttpServer.<SendAsync>d__0.MoveNext()
    </StackTrace>
    </Error>

    Vou postar os arquivos:

    -locadora.js

    (function () {
        var app = angular.module('locadora', []);
    }());

    -listaController.js:

    (function (app) {
    
        var listaController = function ($scope, $http) {
            $http.get("\\api\\filmes").success(function () {
                    $scope.filmes = data;
            });
        };
    
        app.controller("listaController", listaController);
    
    }(angular.module("locadora")));

    -FilmesController.cs:

    using System;
    using System.Collections.Generic;
    using System.Data;
    using System.Data.Entity;
    using System.Data.Entity.Infrastructure;
    using System.Linq;
    using System.Net;
    using System.Net.Http;
    using System.Web.Http;
    using System.Web.Http.Description;
    using LocadoraMVC.Models;
    
    namespace LocadoraMVC.Controllers
    {
        public class FilmesController : ApiController
        {
            private FilmeDb db = new FilmeDb();
    
            // GET: api/Filmes
            public IQueryable<Filme> GetFilmes()
            {
                return db.Filmes;
            }
    
            // GET: api/Filmes/5
            [ResponseType(typeof(Filme))]
            public IHttpActionResult GetFilme(int id)
            {
                Filme filme = db.Filmes.Find(id);
                if (filme == null)
                {
                    return NotFound();
                }
    
                return Ok(filme);
            }
    
            // PUT: api/Filmes/5
            [ResponseType(typeof(void))]
            public IHttpActionResult PutFilme(int id, Filme filme)
            {
                if (!ModelState.IsValid)
                {
                    return BadRequest(ModelState);
                }
    
                if (id != filme.FilmeId)
                {
                    return BadRequest();
                }
    
                db.Entry(filme).State = EntityState.Modified;
    
                try
                {
                    db.SaveChanges();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!FilmeExists(id))
                    {
                        return NotFound();
                    }
                    else
                    {
                        throw;
                    }
                }
    
                return StatusCode(HttpStatusCode.NoContent);
            }
    
            // POST: api/Filmes
            [ResponseType(typeof(Filme))]
            public IHttpActionResult PostFilme(Filme filme)
            {
                if (!ModelState.IsValid)
                {
                    return BadRequest(ModelState);
                }
    
                db.Filmes.Add(filme);
                db.SaveChanges();
    
                return CreatedAtRoute("DefaultApi", new { id = filme.FilmeId }, filme);
            }
    
            // DELETE: api/Filmes/5
            [ResponseType(typeof(Filme))]
            public IHttpActionResult DeleteFilme(int id)
            {
                Filme filme = db.Filmes.Find(id);
                if (filme == null)
                {
                    return NotFound();
                }
    
                db.Filmes.Remove(filme);
                db.SaveChanges();
    
                return Ok(filme);
            }
    
            protected override void Dispose(bool disposing)
            {
                if (disposing)
                {
                    db.Dispose();
                }
                base.Dispose(disposing);
            }
    
            private bool FilmeExists(int id)
            {
                return db.Filmes.Count(e => e.FilmeId == id) > 0;
            }
        }
    }

    sábado, 18 de março de 2017 15:22

Respostas

  • Consegui resolver essa andei pesquisando na net provavelmente deixei ativa alguma configuração de autenticação. E a aplicação esta "reclamando" que algo esta faltando.Ai na pasta App_Start no arquivo WebApiConfig.cs tirei essas dois linhas abaixo e funcionou:

    config.SupressDefaultHostAuthentication(); 
    config.Filters.Add( new HostAuthenticationFilter("") );

    • Marcado como Resposta CLAUDIO JOSE domingo, 19 de março de 2017 21:00
    domingo, 19 de março de 2017 21:00