带有c#后端的Angular 2 Http获取变量不起作用

时间:2016-12-22 08:19:22

标签: c# http angular cors

我一直在使用HTTP请求从数据库中生成许多项目。这对1 C#class

有3个较大的查询
    public IEnumerable<Menu> Menus { get; set; }
    public Dictionary<int, Pagina> Paginas { get; set; }
    public Dictionary<int, Opmaak> Opmaak { get; set; }
    public string Errors { get; set; }

这就像魅力主要对象

http://imgur.com/daAQZkv - HTTP网络摘要

    public Main Get()
    {
        return Main.getAll();
    }

这不能返回anthing,Same Main Object

http://imgur.com/J0i2Y5B - HTTP网络摘要

    public Main Get(string username, string password)
    {
        Login value = new Login(username: username, password: password);
        return Main.getAll(value);
    }

问题,如何通过HTTP请求正确发送变量

Webconfig C#

    public static void Register(HttpConfiguration config)
    {
        EnableCrossSiteRequests(config);
        AddRoutes(config);

    }

    private static void AddRoutes(HttpConfiguration config)
    {
        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{action}/{username}/{password}",
            defaults: new { username = RouteParameter.Optional, password = RouteParameter.Optional}
        );
    }

    private static void EnableCrossSiteRequests(HttpConfiguration config)
    {
        var cors = new EnableCorsAttribute(
            origins: "http://lvh.me:4200",
            headers: "*",
            methods: "*");
        config.EnableCors(cors);
    }

C#Main.cs

 public static Main getAll()
 {
    using (CheckPlusEntities db = new CheckPlusEntities())
    {
        Main Totaal = new Main();

        //Filling Totaal 

        return Totaal;
    }
}

 public static Main getAll(Login Login)
 {
     using (CheckPlusEntities db = new CheckPlusEntities())
     {
         Main Totaal = new Main();

        //Filling Totaal 

        return Totaal;
     }
 }

Angular 2服务

错误=

    get = {


            event: (username:string, password:string): Promise<any> => {    


            let url = "http://{URL}:8080/CheckPlusApi/api/Main/Get/" + username + "/" + password;
            return this._http.get(url)
                .map(response => {
                    return response.json(); // Has a value
                },
                   error =>  {
                       this.errorMessage = <any>error
                }).toPromise();
            }
        }  

好=

    getTest = {
            event: (): Promise<any> => {            
                return this._http.get('http://{URL}:8080/CheckPlusApi/api/Main/Get')
                .map(response => {
                    return response.json(); 
                },
                   error =>  {
                       this.errorMessage = <any>error
                }).toPromise();
            }     
    };  

1 个答案:

答案 0 :(得分:1)

我认为问题在于你的using条款。

尝试通过更改:

删除它
using (CheckPlusEntities db = new CheckPlusEntities())

到此:

CheckPlusEntities db = new CheckPlusEntities();