C# 角度API调用未命中控制器方法
我无法点击我的控制器方法获取 在这个文件中,我调用了dataservice的getfeed方法C# 角度API调用未命中控制器方法,c#,angular,api,C#,Angular,Api,我无法点击我的控制器方法获取 在这个文件中,我调用了dataservice的getfeed方法 ngOnInit() { this.dataservice.getFeed('register').subscribe(result => { } 在data.service.ts文件中,我写了 @Injectable() export class DataService { constructor(private http: HttpClient) { } getFeed(methodNa
ngOnInit() {
this.dataservice.getFeed('register').subscribe(result => {
}
在data.service.ts文件中,我写了
@Injectable()
export class DataService {
constructor(private http: HttpClient) { }
getFeed(methodName: string): Observable<any> {
return this.http.get(environment.baseApiUrl + methodName);
}
}
最后在RegisterController.cs中,我编码如下
[ApiController]
[Route("[controller]")]
public class RegisterController : ControllerBase
{
[HttpGet]
[ProducesResponseType(400)]
[ProducesResponseType(typeof(string), 500)]
public async Task<IActionResult> Get()
{
}
}
如果我没有正确理解您,您希望调用api控制器
http://localhost:4200/api/register
为此,请执行以下操作:
[ApiController]
[Route("api")]
public class RegisterController : ControllerBase
{
[HttpGet("register")]
[ProducesResponseType(400)]
[ProducesResponseType(typeof(string), 500)]
public async Task<IActionResult> Get()
{
}
}
getFeed
方法在没有参数的情况下应该如下所示:
getFeed: Observable<any> {
return this.http.get('api/register');
}
getFeed:可观察{
返回这个.http.get('api/register');
}
或者,我认为,如果您只是像上面那样更改
baseapirl
,它也应该可以工作。试试看。如果我没有正确理解您,您想调用api控制器http://localhost:4200/api/register
为此,请执行以下操作:
[ApiController]
[Route("api")]
public class RegisterController : ControllerBase
{
[HttpGet("register")]
[ProducesResponseType(400)]
[ProducesResponseType(typeof(string), 500)]
public async Task<IActionResult> Get()
{
}
}
getFeed
方法在没有参数的情况下应该如下所示:
getFeed: Observable<any> {
return this.http.get('api/register');
}
getFeed:可观察{
返回这个.http.get('api/register');
}
或者,我认为,如果您只是像上面那样更改
baseapirl
,它也应该可以工作。尝试一下。为了解决您的CORS
问题,您可以在web.config
文件中执行以下操作:
在
部分下,放置以下内容以在项目中全局启用CORS
:
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Credentials" value="true"/>
<add name="Access-Control-Allow-Headers" value="Content-Type" />
<add name="Access-Control-Allow-Methods" value="GET, POST, PUT, OPTIONS" />
</customHeaders>
</httpProtocol>
为了解决您的
CORS
问题,您可以在web.config
文件中执行以下操作:
在
部分下,放置以下内容以在项目中全局启用CORS
:
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Credentials" value="true"/>
<add name="Access-Control-Allow-Headers" value="Content-Type" />
<add name="Access-Control-Allow-Methods" value="GET, POST, PUT, OPTIONS" />
</customHeaders>
</httpProtocol>
您是否收到了CORS问题?我如何检查它?register.component.ts中的register
是否是值为字符串的变量'register'
?现在您调用this.dataservice.getFeed(register)
,是否打算将其作为字符串this.dataservice.getFeed('register')
传递?另外,api在开发中运行的端口是什么?您将http请求指向端口4200,这是angular在开发中运行的位置,它不需要指向api的端口吗?@AlexanderStaroselsky its string…@NithinPaul检查web浏览器上的开发人员控制台以查看是否存在任何错误或CORS问题。您是否收到CORS问题?如何检查它?在register.component.ts中的register
是一个值为string的变量吗“寄存器”
?现在您调用this.dataservice.getFeed(register)
,是否打算将其作为字符串this.dataservice.getFeed('register')
传递?另外,api在开发中运行的端口是什么?您将http请求指向端口4200,这是angular在开发中运行的位置,它不需要指向api的端口吗?@AlexanderStaroselsky its string…@NithinPaul检查web浏览器上的开发人员控制台以查看是否存在任何错误或CORS问题。Rahul在我的web.config中指定了类似的错误,但当我尝试使用direct URL i时,仍然会遇到相同的错误我能够找到我的服务api方法,但当我使用angular调用它时,我就不行了。是否需要在客户端angualr端执行任何操作?@NithinPaul否您不需要在客户端执行任何操作。可能需要重新启动IIS以反映更改。确定是否还需要从节中删除此标记?因为在我的验尸错误中,它的显示好像没有ok状态,所以当我在谷歌上搜索它时,有人提到它,现在它在我的服务端被击中:),我删除了那个处理程序部分,完全感谢你们的帮助:)Rahul在我的web.config中我已经指定了这样的内容,但是当我尝试使用direct URL时,我仍然会遇到同样的错误,我能够找到我的服务api方法,但当我使用angular调用它时,我不会。是否需要在客户端angualr端执行任何操作?@NithinPaul否您不需要在客户端执行任何操作。可能需要重新启动IIS以反映更改。确定是否还需要从节中删除此标记?因为在我的验尸官错误中,它的显示好像没有ok状态,所以当我在谷歌上搜索它时,有人提到它现在它在我的服务端被击中了:),我删除了处理程序部分,完全感谢你的帮助:)