【问题标题】:asp.net core rest api and Uno-platform wasmasp.net core rest api 和 Uno-platform wasm
【发布时间】:2020-06-28 22:41:58
【问题描述】:

我正在尝试从 uno 平台 WASM 客户端调用 asp.net 核心休息演示:

        [HttpGet]
        public IEnumerable<WeatherForecast> Get()
        {
            var rng = new Random();
            return Enumerable.Range(1, 5).Select(index => new WeatherForecast
            {
                Date = DateTime.Now.AddDays(index),
                TemperatureC = rng.Next(-20, 55),
                Summary = Summaries[rng.Next(Summaries.Length)]
            })
            .ToArray();
        }

当 wasm 客户端调用其余部分时,我得到 TypeError: Failed to fetch 但这工作得很好 UWP 和控制台应用程序。

客户正在使用

 public async Task<string> RefreshDataAsync(string x)
        {
            var _client = new HttpClient();


            var response = await _client.GetStringAsync(@"http://localhost:58658/weatherforecast");
            return response;


        }

WASM uno 平台是否支持 rest api 调用?

【问题讨论】:

  • 我还添加到 asp.net api services.AddCors(options => { options.AddPolicy("CorsPolicy", builder => builder.AllowAnyOrigin() .AllowAnyMethod() .AllowAnyHeader() 。 AllowCredentials()); });

标签: uno-platform


【解决方案1】:

Uno 平台中 Web 服务的使用(假设为 http/json)与任何 .NET 应用程序的工作方式相同。使用HttpClient

对于 WebAssembly,您需要创建一个 WasmHttpHandler,然后将其作为 HttpClient 的 innerHandler 传入。

#if __WASM__
            var innerHandler = new Uno.UI.Wasm.WasmHttpHandler();
#else
            var innerHandler = new HttpClientHandler();
#endif
            _httpClient = new HttpClient(innerHandler);

有关使用 HttpClient 的示例,请参阅 https://github.com/unoplatform/uado

【讨论】:

  • 这个 sill 给出 TypeError: Failed to fetch 的错误
【解决方案2】:

原来需要其余的 api

 public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            app.UseCors(builder => builder
   .AllowAnyOrigin()
   .AllowAnyMethod()
   .AllowAnyHeader()
   );

【讨论】:

  • 另外,确保它在 app.UseAuthorization(); 之前在 app.UseRouting(); 之后如果我在其他任何地方配置它,它对我不起作用。
猜你喜欢
  • 1970-01-01
  • 2022-07-12
  • 2022-01-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-03
  • 1970-01-01
  • 2021-01-31
相关资源
最近更新 更多