我在Visual Studio中遇到了一件很奇怪的事情。
我有这个控制器
[Route("api/[controller]")]
[ApiController]
public class VehicleController : ControllerBase
{
private readonly IVehicleService _vehicleService;
public VehicleController(IVehicleService vehicleService)
{
_vehicleService = vehicleService;
}
[HttpGet("[action]")]
public IActionResult Make()
{
var data = _vehicleService.GetMake(0, 10);
return Ok(data);
}
}
}
它应该从我的服务中返回getAll数据,该数据将在Angular中使用和显示。
import { HttpClient } from '@angular/common/http';
@Component({
selector: 'app-make',
templateUrl: './make.component.html'
})
export class MakeComponent {
public makes: IMake[];
constructor(http: HttpClient, @Inject('BASE_URL') baseUrl: string) {
http.get<IMake[]>(baseUrl + 'api/Vehicle/Make').subscribe(result => {
this.makes = result;
}, error => console.error(error));
}
}
interface IMake {
Id: number;
Name: string;
Abrv: string;
}
这是.ts组件文件,而html看起来像这样
<table class='table' *ngIf="makes">
<thead>
<tr>
<th>Id</th>
<th>Name</th>
<th>Abrv</th>
</tr>
</thead>
<tbody>
<tr *ngFor="let make of makes">
<td>{{ make.Id }}</td>
<td>{{ make.Name }}</td>
<td>{{ make.Abrv }}</td>
</tr>
</tbody>
</table>
我基本上只是更改了创建角度项目时获得的默认文件。我以为只要我使用已经创建的服务和整个项目对其进行更改,它就会并且应该起作用。我错了。
尝试运行该网站时出现错误500,我不太理解该错误,但是我看到它发出““ https://localhost:44392/api/Vehicle/Make的Http错误响应:500 OK”
好的,控制器出了点问题,所以我去了一个断点,方法并没有停止。在构造函数和方法中都放置一个断点,都不要停止。 使您认为根本没有调用这些方法。因此,我注释掉了构造函数(知道它将出错),并在方法的开头放置了一个断点。瞧,它在断点处停止了,如果我接下来跳转,由于_vehicleService为空,它将出错。
到底是什么问题,该方法是否被调用?对我来说毫无意义。
答案 0 :(得分:1)
您很可能遇到尝试解决IVehicleService实例的问题。如果无法解决所需的服务,您将在击中任何断点之前得到Status 500响应。
要做的第一件事是在启动过程中验证您是否已在IServiceCollection中注册了IVehicleService。