Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 角度API调用未命中控制器方法_C#_Angular_Api - Fatal编程技术网

C# 角度API调用未命中控制器方法

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

我无法点击我的控制器方法获取

在这个文件中,我调用了dataservice的getfeed方法

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状态,所以当我在谷歌上搜索它时,有人提到它现在它在我的服务端被击中了:),我删除了处理程序部分,完全感谢你的帮助:)