Javascript 尝试使用typescript从Angular 2调用MVC Get操作
我有一个简单的MVC Get方法,如下所示,用于从会话中获取客户IdJavascript 尝试使用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断点,即使我将与
[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
类?