簡體   English   中英

Blazor服務注入無法正常工作

[英]Blazor service injection not working properly

我在Blazor 3.0.0-preview4-19216-03中針對客戶端應用有以下代碼:

namespace BlazorShared.Services
{
    public interface ILogin
    {
        Task<string> Login();
    }

    public class LoginService : ILogin
    {
        private HttpClient _client;

        public LoginService(HttpClient client)
        {
            _client = client;
        }

        public async Task<string> Login()
        {
            var myclient = new HttpClient();

            var responseMessage = await myclient.GetAsync("http://www.google.es");
            var content = await responseMessage.Content.ReadAsStringAsync();

            Debug.WriteLine(content);

            return content;
        }
    }
}

public class Startup
{
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddSingleton<ILogin, LoginService>();
    }

    public void Configure(IComponentsApplicationBuilder app)
    {
        app.AddComponent<App>("app");
    }
}

和這個HTML

@functions {
    public async Task Submit()
    {
        var str = await LoginService.Login(null, null, null);
        Console.WriteLine(str);
    }
}

完整的Razor文件: https : //pastebin.com/3LbQQvk0

我已經對其進行了測試,並且Web請求從未完成,並且無法在客戶端中顯示服務響應。 我已經按照說明嘗試在chrome中調試,而且我看到正在調用服務方法,但沒有調用服務的構造函數,據我了解,Blazor應該注入HttpClient。 有什么想法會發生什么嗎? 謝謝。

即使不是罪魁禍首,也以下內容是錯誤的...在LoginService中,您定義了一個HttpClient變量,您在其中分配了DI提供的HttpClient實例。 另一方面,您定義一個名為myclient的新HttpClient對象,並在Login方法中使用它。

您應該使用DI提供的對象。 您不應該自己定義HttpClient對象。 為什么呢 因為Blazor為您配置了它創建的HttpClient。 例如,設置文檔基礎URI,使您的Web應用程序可以作為SPA應用程序進行導航。

希望這可以幫助...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM