C# 控制器在调用时不返回任何类型的数据,测试字符串除外
我正在连接第三方API,该API需要调用来检索授权代码和令牌 API需要重定向URL,该URL返回时包含附加到查询字符串的授权代码 在我这边,我在下面设置了这个控制器,它将读取查询字符串 然后,我的应用程序需要向API发出POST请求以获取令牌,您将看到我调用包含POST请求的控制器 当我单击我的按钮连接到API时,在我的浏览器窗口中,我确实看到我被重定向到下面的GetGeologicalPeriod()控制器,因为我看到以下消息: 您已到达地质周期终点 我确实在查询字符串中看到了授权代码。 但我看不到其他任何东西,没有错误,什么都没有 我本来希望看到调用GetGeologicalPeriodToken返回的结果,或者至少是一个失败的错误,但我什么也没有得到……甚至在浏览器控制台窗口中也没有 所以我有点不知所措,不知道到底发生了什么 因为这是在一个开发服务器上,所以我无法在VisualStudio中在本地单步执行它 是否有显示消息或写入控制台以便我可以查看发生了什么 谢谢C# 控制器在调用时不返回任何类型的数据,测试字符串除外,c#,asp.net-core,asp.net-core-webapi,asp.net-core-3.1,C#,Asp.net Core,Asp.net Core Webapi,Asp.net Core 3.1,我正在连接第三方API,该API需要调用来检索授权代码和令牌 API需要重定向URL,该URL返回时包含附加到查询字符串的授权代码 在我这边,我在下面设置了这个控制器,它将读取查询字符串 然后,我的应用程序需要向API发出POST请求以获取令牌,您将看到我调用包含POST请求的控制器 当我单击我的按钮连接到API时,在我的浏览器窗口中,我确实看到我被重定向到下面的GetGeologicalPeriod()控制器,因为我看到以下消息: 您已到达地质周期终点 我确实在查询字符串中看到了授权代码。 但
[ApiController]
public class GeologicalPeriodController : ControllerBase
{
[HttpGet]
public ActionResult<String> GetGeologicalPeriod()
{
string getTest = "you have reached the GeologicalPeriod endpoint.";
var queryString = Request.Query["code"];
var postResult = GetGeologicalPeriodToken(queryString);
return postResult;
}
[HttpPost("AuthRequest")]
public ActionResult<String> GetGeologicalPeriodToken(string authCode)
{
string authToken = authCode;
string authString = "admin";
var queryString = Request.Query["code"];
var client = new RestClient("https://geologicalPeriod.geo.gov/oauth/token?accessType=professor&code=" + authCode + "&redirect_uri=https://jamaica.round.astro.edu/api/geologicalPeriodauth/geologicalPeriod/AuthRequest");
var request = new RestRequest(Method.POST);
request.AddHeader("Authorization", authString);
IRestResponse response = client.Execute(request);
var apiResponse = response;
return apiResponse.Content.ToString();
}
[ApiController]
公共类地质学周期控制器:ControllerBase
{
[HttpGet]
公共行动结果GetGeologicalPeriod()
{
string getTest=“您已到达地质周期终点。”;
var queryString=Request.Query[“code”];
var postResult=GetGeologicalPeriodToken(查询字符串);
返回结果;
}
[HttpPost(“AuthRequest”)]
公共操作结果GetGeologicalPeriodToken(字符串authCode)
{
字符串authToken=authCode;
字符串authString=“admin”;
var queryString=Request.Query[“code”];
var client=新的RestClient(“https://geologicalPeriod.geo.gov/oauth/token?accessType=professor&code=“+authCode+”&重定向\u uri=https://jamaica.round.astro.edu/api/geologicalPeriodauth/geologicalPeriod/AuthRequest");
var请求=新的重新请求(Method.POST);
AddHeader(“授权”,authString);
IRestResponse response=client.Execute(请求);
var apiResponse=响应;
返回apiResponse.Content.ToString();
}
当GetGeologicalPeriod()
完成时,您的浏览器(如果通过浏览器访问)应显示一个字符串,其中包含从服务器检索到的响应内容,假设响应包含内容。您可以做两件事:返回apiResponse.StatusCode
(或者以何种方式调用属性)以及内容,并检查GetGeologicalPeriod()的HTTP响应
-如果一切正常,完成后您应该获得HTTP200@CamiloTerevinto这似乎很奇怪,因为我确实看到我的测试字符串您已到达GeologicalPeriod端点。
在浏览器窗口中,但没有其他内容。没有错误,控制台中也没有任何内容。那么,您发布的代码不是正确的,因为get测试
在当前文件中的任何位置都不会打印code@CamiloTerevinto很抱歉,我本应该在测试实际进程时将其取出,但返回了getTest
,以确保浏览器被重定向到正确的URL路径。抱歉:)好的,因此我的第一条评论仍然有效:您可以做两件事:re打开apiResponse.StatusCode(或以任何方式调用属性)以及内容,并检查GetGeologicalPeriod()的HTTP响应-如果一切正常,完成后您应该会得到HTTP 200(查看网络选项卡)