为什么restsharp挂在等待回应

发布于 2025-02-04 03:01:52 字数 852 浏览 3 评论 0原文

我最近将RestSharp升级到版本107.3.0。我必须修改我的请求一些,但是Web API获取请求和返回,但是它挂在那里等待响应...

private async Task<bool> AuthenticateUser(string username, string password)
{
    var encryption = new Encryption64();

    var encrypt = encryption.Encrypt(password, _key);

    var client = new RestClient(UserSettings.URL);

    var uri = $"users/authenticate/{username}/";

    var pass = new PasswordDTO
    {
        Password = encrypt
    };

    var request = new RestRequest(uri)
        .AddJsonBody(pass);

    //var json = JsonConvert.SerializeObject(pass);

    //request.AddParameter("application/json; charset=utf-8", json, ParameterType.RequestBody);

    var response = await client.PostAsync<bool>(request);

    return response;
}

等待client.postasync&lt; bool&gt;(请求) 。调试窗口中也没有错误。在我升级之前,这起作用了。我在做什么错?

I recently upgraded RestSharp to version 107.3.0. I had to modify my request some, but the Web API gets the request and returns, but it hangs there waiting for the response...

private async Task<bool> AuthenticateUser(string username, string password)
{
    var encryption = new Encryption64();

    var encrypt = encryption.Encrypt(password, _key);

    var client = new RestClient(UserSettings.URL);

    var uri = 
quot;users/authenticate/{username}/";

    var pass = new PasswordDTO
    {
        Password = encrypt
    };

    var request = new RestRequest(uri)
        .AddJsonBody(pass);

    //var json = JsonConvert.SerializeObject(pass);

    //request.AddParameter("application/json; charset=utf-8", json, ParameterType.RequestBody);

    var response = await client.PostAsync<bool>(request);

    return response;
}

The line await client.PostAsync<bool>(request) never completes. No errors in the Debug window either. This worked before I upgraded. What am I doing wrong?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

深海夜未眠 2025-02-11 03:01:52

我不确定这是否是完全正确的...但是我摆弄了它,直到它使它起作用为止。

private bool AuthenticateUser(string username, string password)
{    
    using (var client = new RestClient(UserSettings.URL))
    {
        var encryption = new Encryption64();

        var encrypt = encryption.Encrypt(password, _key);

        var uri = $"users/authenticate/{username}/";

        var pass = new PasswordDTO
        {
            Password = encrypt
        };

        var request = new RestRequest(uri)
            .AddJsonBody(pass);

        var response = client.PostAsync<bool>(request).Result;

        return response;
    }
}

更新

private async Task<bool> AuthenticateUser(string username, string password)
{    
    using (var client = new RestClient(UserSettings.URL))
    {
        var encryption = new Encryption64();

        var encrypt = encryption.Encrypt(password, _key);

        var uri = $"users/authenticate/{username}/";

        var pass = new PasswordDTO
        {
            Password = encrypt
        };

        var request = new RestRequest(uri)
            .AddJsonBody(pass);

        var response = await client.PostAsync<bool>(request);

        return response;
    }
}
public async Task<bool> AuthenticateUserAsync([FromUri] string username, [FromBody] PasswordDTO pass)
{
    Log.Logger.ForContext<UserController>().Information("{User} is Logging In", username);
    using (var context = new DatabaseContext())
    {
        var user = await context.bma_users
            .AsNoTracking()
            .FirstOrDefaultAsync(p => p.username == username);

        if (user is null)
            return false;

        return (user.password == pass.Password);
    }
}

我仍然欢迎任何改进的想法。

I am not sure if this is entirely correct... but I fiddled with it until I got it working.

private bool AuthenticateUser(string username, string password)
{    
    using (var client = new RestClient(UserSettings.URL))
    {
        var encryption = new Encryption64();

        var encrypt = encryption.Encrypt(password, _key);

        var uri = 
quot;users/authenticate/{username}/";

        var pass = new PasswordDTO
        {
            Password = encrypt
        };

        var request = new RestRequest(uri)
            .AddJsonBody(pass);

        var response = client.PostAsync<bool>(request).Result;

        return response;
    }
}

UPDATE

private async Task<bool> AuthenticateUser(string username, string password)
{    
    using (var client = new RestClient(UserSettings.URL))
    {
        var encryption = new Encryption64();

        var encrypt = encryption.Encrypt(password, _key);

        var uri = 
quot;users/authenticate/{username}/";

        var pass = new PasswordDTO
        {
            Password = encrypt
        };

        var request = new RestRequest(uri)
            .AddJsonBody(pass);

        var response = await client.PostAsync<bool>(request);

        return response;
    }
}
public async Task<bool> AuthenticateUserAsync([FromUri] string username, [FromBody] PasswordDTO pass)
{
    Log.Logger.ForContext<UserController>().Information("{User} is Logging In", username);
    using (var context = new DatabaseContext())
    {
        var user = await context.bma_users
            .AsNoTracking()
            .FirstOrDefaultAsync(p => p.username == username);

        if (user is null)
            return false;

        return (user.password == pass.Password);
    }
}

I still welcome any ideas for improvement.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文