我已经创建了一个ASP。net项目WebAPI和MVC项目。当我尝试使用mvc项目通过HttpClient登录到web api时,它会抛出一个异常。
MVC代码,
在AccountController中登录:
public async Task<ActionResult> Login(LoginViewModel model, string returnUrl)
{
if (!ModelState.IsValid)
{
return View(model);
}
try
{
var client = WebApiHttpClient.GetClient();
string username = model.Email;
string password = model.Password;
HttpContent content = new StringContent("grant_type=password&username=" + username + "&password=" + password,System.Text.Encoding.UTF8,
"application/x-www-form-urlencoded");
var response = await client.PostAsync("/Token", content);
if (response.IsSuccessStatusCode)
{
//string contentResponse = await response.Content.ReadAsStringAsync();
//return Content(contentResponse);
TokenResponse tokenResponse =
await response.Content.ReadAsAsync<TokenResponse>();
WebApiHttpClient.storeToken(tokenResponse);
// return Content(tokenResponse.AccessToken);
return RedirectToAction("Index", "Home");
}
else
{
return Content("Error in: " + response.StatusCode);
}
}
catch
{
return Content("Error catch .");
}
}
WebapiHtppClient类:用于连接到API
public class WebApiHttpClient
{
public const string WebApiBaseAddress = "https://localhost:44379/";
public static HttpClient GetClient()
{
HttpClient client = new HttpClient();
client.BaseAddress = new Uri(WebApiBaseAddress);
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new
MediaTypeWithQualityHeaderValue("application/json"));
var session = HttpContext.Current.Session;
if (session["token"] != null)
{
TokenResponse tokenResponse = getToken();
client.DefaultRequestHeaders.Authorization =
new AuthenticationHeaderValue("bearer", tokenResponse.AccessToken);
}
return client;
}
public static void storeToken(TokenResponse token)
{
var session = HttpContext.Current.Session;
session["token"] = token;
}
public static TokenResponse getToken()
{
var session = HttpContext.Current.Session;
return (TokenResponse)session["token"];
}
}
public class TokenResponse
{
[JsonProperty("access_token")]
public string AccessToken { get; set; }
[JsonProperty("token_type")]
public string TokenType { get; set; }
[JsonProperty("expires_in")]
public int ExpiresIn { get; set; }
[JsonProperty("userName")]
public string Username { get; set; }
[JsonProperty(".issued")]
public string IssuedAt { get; set; }
[JsonProperty(".expires")]
public string ExpiresAt { get; set; }
}
我在这里已经试过很多次了,但是没有找到结果。一个在等待客户。PostAsync(“/Token”,content),只需放置“Token”
有了chrome的邮递员,我就可以登录并在Web Api中看到这些东西了
邮递员
错误捕获:发送请求时出错。mscorlibat系统。运行时。编译器服务。任务等待者。系统中的ThrowForNonSuccess(任务任务)。运行时。编译器服务。任务等待者。系统上的HandleNonSuccessAndDebuggerNotification(任务)。运行时。编译器服务。任务等待者'1。WebApplication1上的GetResult()。控制器。会计控制员。迪乌11。C:\wamp\www\arqsi\it1\iteracao3\iteracao3\WebApplication1\Controllers\AccountController中的MoveNext()。政务司司长:第88行
我建议你把一个调试器
(在会计控制器=
我看到了一个奇怪的问题。NET client for MongoDB抛出了一个
我有一些文件要上传,有些文件失败了,因为帖子是异步的,而不是同步的。 我正在尝试将此调用作为同步调用。 我想等回应。 如何将此调用设为同步调用? 任何帮助感谢!
然后我有了调用webAPI的dataLayer,它看起来像这样。为了简单起见,我直接使用。result。 我的问题是,我看到一些教程说我们应该避免使用。result,因为它可能会导致死锁。我不确定在我的情况下是否需要使用Async/await?如果我确实需要,我知道我应该一直异步,但我确实希望我的controlLayer是同步的,因为我有其他层调用controlLayer的函数,我不希望所有层的函
我已经创建了一个简单的Jersey客户端,它能够成功地使用有效负载执行POST请求。但现在它正在等待来自httpendpoint的响应: 问:代码是否有可能不等待响应。 我试图阅读泽西客户端文档,以确定我的代码是否有可能不等待响应?我看到我们只能在读取响应后关闭连接,但在我的情况下没有用。我想在将有效负载发布到endpoint后立即关闭连接。 我只需要触发并忘记POST请求,因为我不关心响应。这是
说明 调用方法: $.f2e.util.yy.isInstallYY(fn); 函数说明: UDB登陆 参数说明: 参数名 类型 说明 备注 fn function 回调函数 null为未登录YY客户端 无 脚本 <script> $.f2e.util.yy.isInstallYY(function(data){ if(data){ //有登录
我有一个从服务器端抛出的异常,我希望在客户端捕捉到这个异常。异常应该使用Jersey通过REST发送。这是我目前所掌握的: 定义我的异常: