Javascript 尝试使用typescript从Angular 2调用MVC Get操作

Javascript 尝试使用typescript从Angular 2调用MVC Get操作,javascript,asp.net-mvc,angular,typescript,Javascript,Asp.net Mvc,Angular,Typescript,我有一个简单的MVC Get方法,如下所示,用于从会话中获取客户Id [HttpGet] public string GetCustomerId() { return Session["CUSTOMERID"].ToString(); } 如果我直接在浏览器中点击此URL 我可以在方法中设置一个断点,它被命中,我得到返回的值 但是,我需要从我的客户机代码调用该方法,该代码是用typescript编写的Angular 2。我的Typescript方法如下-我无法让它命中MVC断点,即使我将与

我有一个简单的MVC Get方法,如下所示,用于从会话中获取客户Id

[HttpGet]
public string GetCustomerId()
{
  return Session["CUSTOMERID"].ToString();
}
如果我直接在浏览器中点击此URL 我可以在方法中设置一个断点,它被命中,我得到返回的值

但是,我需要从我的客户机代码调用该方法,该代码是用typescript编写的Angular 2。我的Typescript方法如下-我无法让它命中MVC断点,即使我将与上面完全相同的URL记录到控制台

public getCustomerIdFromSession() {
    console.log('get customer from session called');
    let srv = this.environmentService.getCurrentEnvironment();
    let httpOrHttps = '';

    if (srv === AppSettings.ENV_LOCALHOST) {
        httpOrHttps = AppSettings.URL_HTTP;
    }
    else {
        httpOrHttps = AppSettings.URL_HTTPS;
    }
    let baseUrl = httpOrHttps + srv + AppSettings.URL_GET_CUST_FROM_SESSION;
    console.log(baseUrl); //this logs - http://localhost/myApp/Home/GetCustomerId

    return this.http.get(baseUrl)
        .catch(this.handleError);
}

public handleError(error: Response) {
    console.log("error");
    return Observable.throw(error.json() || 'Server Error');
}
**更新以包括整个Typescript服务

import { Injectable, Output, EventEmitter } from '@angular/core';
import { Http, Response, RequestOptions, Headers } from '@angular/http';
import { Observable } from 'rxjs/Observable';
import { EnvironmentService } from '../common/environment.service';
import { AppSettings } from '../common/app-settings';

@Injectable()
export class SessionService {

    @Output() public gSession: EventEmitter<any> = new EventEmitter();
    private sessionTime: number = 1500000; // 25 minute
    constructor(private http: Http, private environmentService: EnvironmentService) {

    }

    public setValue(isLoading: boolean): void {
        this.gSession.emit(isLoading);
    }

    public getValue(): any {
        return this.gSession;
    }

    public startSession(): void {
        this.getCustomerIdFromSession();
        let timeoutId = setTimeout(() => {
            this.setValue(true);
        }, this.sessionTime);
    }

    public getCustomerIdFromSession() {
        console.log('get customer from session called');
        let srv = this.environmentService.getCurrentEnvironment();
        let httpOrHttps = '';

        if (srv === AppSettings.ENV_LOCALHOST) {
            httpOrHttps = AppSettings.URL_HTTP;
        }
        else {
            httpOrHttps = AppSettings.URL_HTTPS;
        }
        let baseUrl = httpOrHttps + srv + AppSettings.URL_GET_CUST_FROM_SESSION;
        console.log(baseUrl); //this logs - http://localhost/myApp/Home/GetCustomerId

        return this.http.get(baseUrl)
            .catch(this.handleError);
    }

    public handleError(error: Response) {
        console.log("error");
        return Observable.throw(error.json() || 'Server Error');
    }

    public extractData(res: Response) {
        console.log("In extract method");
        let body = res.json();
        console.log(body);
        if (body) {
            return body.data || body;
        } else {
            return {};
        }
    }
}
从'@angular/core'导入{Injectable,Output,EventEmitter};
从'@angular/Http'导入{Http,Response,RequestOptions,Headers};
从“rxjs/Observable”导入{Observable};
从“../common/environment.service”导入{EnvironmentService};
从“../common/app settings”导入{AppSettings};
@可注射()
导出类会话服务{
@Output()public gSession:EventEmitter=neweventemitter();
私有会话时间:number=1500000;//25分钟
构造函数(私有http:http,私有environmentService:environmentService){
}
公共设置值(isLoading:boolean):无效{
此.gSession.emit(isLoading);
}
public getValue():任何{
返回此.gSession;
}
public startSession():void{
这是.getCustomerIdFromSession();
let timeoutId=setTimeout(()=>{
此.setValue(true);
},这是sessionTime);
}
public getCustomerIdFromSession(){
log('get customer from session called');
让srv=this.environmentService.getCurrentEnvironment();
让httpOrHttps='';
if(srv==AppSettings.ENV_LOCALHOST){
httpOrHttps=AppSettings.URL\u HTTP;
}
否则{
httpOrHttps=AppSettings.URL\u HTTPS;
}
让baseUrl=httpOrHttps+srv+AppSettings.URL\u从\u会话获取\u CUST\u;
console.log(baseUrl);//此日志-http://localhost/myApp/Home/GetCustomerId
返回此.http.get(baseUrl)
.接住(这个.把手错误);
}
公共句柄错误(错误:响应){
控制台日志(“错误”);
返回Observable.throw(error.json()| |“服务器错误”);
}
公共数据(res:Response){
log(“在提取方法中”);
让body=res.json();
控制台日志(主体);
如果(正文){
返回body.data | | body;
}否则{
返回{};
}
}
}

您没有映射响应

return this.http
     .get(baseUrl)
     .map(this.extractData)
     .catch(this.handleError);

private extractData(res: Response) {
        let body = res.json();
        if (body) {
            return body.data || body;
        } else {
            return {};
        }
    }
如果知道响应将是
json
text()
,则必须映射响应并使用
json()
进行处理。通常是JSON


我随意添加了一个响应处理程序,比如
extractData
。如果需要,您可以直接
json()
响应。

您没有映射响应

return this.http
     .get(baseUrl)
     .map(this.extractData)
     .catch(this.handleError);

private extractData(res: Response) {
        let body = res.json();
        if (body) {
            return body.data || body;
        } else {
            return {};
        }
    }
如果知道响应将是
json
text()
,则必须映射响应并使用
json()
进行处理。通常是JSON


我随意添加了一个响应处理程序,比如
extractData
。如果需要,您可以直接
json()
响应。

将给出一个添加了提取方法的goeven仍然没有在方法中获得MVC断点-添加了一个console.log(“在提取方法中”)行到提取方法的开头,但它从未打印到Chromeconsole@Ctrl_Alt_Defeat你能把整个服务都寄出去吗?您的构造函数中的
Http
类是否有实例?将显示添加了提取方法的goeven仍然没有在方法中命中MVC断点-添加了console.log(“在提取方法中”)行到提取方法的开头,但它从未打印到Chromeconsole@Ctrl_Alt_Defeat你能把整个服务都寄出去吗?是否在构造函数中实例化了
Http
类?