繁体   English   中英

带有Angular 7模板的ASP.NET Core连接到SQL Server Express数据库以读取表

[英]ASP.NET Core with Angular 7 template connect to SQL Server Express database to read table

我已经使用Angular模板在Visual Studio Community ASP.NET Core中创建了一个应用程序。 我将项目的Angular升级到了v7。

我试图按照这个例子, 这个C-Sharpcorner链接

问题是,当我尝试使用https://localhost:44367/api/Employee/Index连接到服务器时,抛出了无法连接到服务器的异常。

SqlException:建立与SQL Server的连接时发生与网络相关或特定于实例的错误。 服务器未找到或无法访问。 验证实例名称正确,并且已将SQL Server配置为允许远程连接。 (提供者:SQL网络接口,错误:26-指定服务器/实例时出错)

所以我在SQL Server中创建了表和过程,检查了它们的存在。 服务器已启动,并按照此msdn link中的配置进行配置。

我启用了TCP / IP,并向防火墙添加了新规则,以允许来自本地域的所有TCP端口请求。

我的Employee.cs被修改为实际项目的名称。

我的EmployeeDataAccessLayer.cs被修改为实际项目的名称和使用ADO.Net实体数据模型测试的连接字符串的名称。

我还将连接字符串添加到web.config

我在仅更改项目名称的位置添加了控制器。

在我将代码注入Angular应用程序empservice.service.ts ,遇到了一些困难,因为我不知道很热地修改下面的函数以使用HttpClient(映射可观察到的Http的rxjs)不会工作)。 所以我在构造函数结束后立即注释了代码。

该服务已在应用程序中注册为提供商。

import { Injectable, Inject } from '@angular/core';
import { Http, Response} from '@angular/http';
import { HttpClient } from '@angular/common/http';
import { Observable, of } from 'rxjs';
import { Router } from '@angular/router';
import { map } from 'rxjs/operators';


@Injectable()
export class EmployeeService {
myAppUrl: string = "";
constructor(private httpClient: HttpClient, @Inject('BASE_URL') baseUrl: string) {
this.myAppUrl = baseUrl;
}
//getEmployees() {
//  return this.httpClient.get(this.myAppUrl + 'api/Employee/Index')
//        .map((response: Response) => response.json()
//        .catch(this.errorHandler));
//}

//getEmployeeById(id: number) {
//    return this._http.get(this.myAppUrl + "api/Employee/Details/" + id)
//        .map((response: Response) => response.json())
//        .catch(this.errorHandler)
//}

问题1期望https:// localhost:44367 / api / Employee / Index提供表中的内容是错误的吗? (仅控制器的实现还不够吗?)问题2您能否帮助我改写上面服务中的代码以在Angular应用程序中获取数据?

根据错误:

SqlException:...找不到服务器或无法访问服务器。 验证实例名称正确无误...

和connectionString:

string connectionString = "data source = DESKTOP - RBLIODU\\SQLEXPRESS;initial catalog = Employees; integrated security = True;MultipleActiveResultSets=True;App=EntityFramework";

我建议您将服务器名称更改为(localhost)DESKTOP-RBLIODU (不带空格)。

像那样:

string connectionString = "data source=(localhost)\\SQLEXPRESS;initial catalog = Employees; integrated security = True;MultipleActiveResultSets=True;App=EntityFramework";

祝好运!

经过无数次尝试和失败之后,回到我没有学过的最基本的知识,导致我在学校做了其他事情,我在帖子中注意到要访问数据库, 必须首先通过程序Visual连接到该数据库。 工作室,使用服务器资源管理器 由于我要使用的连接字符串未在Visual Studio中打开,因此无法连接到数据库。

至于第二个问题,答案与此类似:

export class EmployeeService {
employees: Observable<Employees[]>;
newemployee: Employees;
constructor(private http: HttpClient) {
}
getEmployees() {
return this.http.get<Employee[]>(baseUrl + 'Employees');
}
etc...
}

精通此过程后,我可能会编辑此帖子。 目前,这是我的基本理解。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM