标签: webapi

Blazor 中的禁用/启用按钮 - 取决于表单中的内容

所以我正在 ASP.NET Core 中创建这个小项目,我已经编写了一个 WEB API,但我正在努力使用 Blazor 中的前端来使用该 API。POST、GET HTTP 请求效果很好。我有一个剃刀页面,我在其中放入了一些数据(姓名、家庭姓名等),然后单击“发送”,将数据发布到 API。

关于该表格有一些验证:姓名 – 至少 5 个字符 FamilyName – 至少 5 个字符的地址 – 至少 10 个字符的电子邮件地址 – 必须是有效的电子邮件年龄 – 必须在 20 到 60 之间

而这一切都在这里通过 DataAnnotations 完成:

using System.ComponentModel.DataAnnotations;

namespace Blazor.Data
{
    public class Applicant
    {
        public int Id { get; set; }

        [MinLength(5, ErrorMessage ="Name must contain atleast 5 characters.")]
        public string Name { get; set; }

        [MinLength(5, ErrorMessage ="Family Name must contain atleast 5 characters.")]
        public string FamilyName …
Run Code Online (Sandbox Code Playgroud)

c# frontend button blazor webapi

3
推荐指数
2
解决办法
1932
查看次数

使用Postman发送PATCH到Asp.net Core webapi时出错

我有一个模型,

public class Order
{
    public Guid Id { get; set; }
    public IEnumerable<string> ItemIds { get; set; }
    public string Currency { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

和一个存储库,

public interface IOrderRepository
{
    IEnumerable<Order> Get();
    Order Get(Guid id);
    void Add(Order order);
    void Update(Guid id, Order order);
    // other irrelevant code has been deleted for simplicity
}

public class MemoryOrderRepository : IOrderRepository
{
    private readonly IList<Order> _orders = new List<Order>();
    public IEnumerable<Order> Get() => _orders;

    public Order Get(Guid id) => _orders.FirstOrDefault(o => …
Run Code Online (Sandbox Code Playgroud)

c# postman asp.net-core asp.net-core-webapi webapi

2
推荐指数
1
解决办法
7230
查看次数

如何在 .net core 3.1 上将 xml 输入(请求)传递给 Web api

我有一个 .net core 3.1 web api。我已经尝试了以下但它总是在它击中它时变成空

[HttpPost]     
    public IActionResult ReturnXmlDocument(HttpRequestMessage request)
    {
        var doc = new XmlDocument();
        doc.Load(request.Content.ReadAsStreamAsync().Result);        
        return Ok(doc.DocumentElement.OuterXml.ToString());
    }
Run Code Online (Sandbox Code Playgroud)

它甚至在调试过程中也没有命中它,它还在 fiddler 中显示 415 错误。

xml fiddler asp.net-core webapi

2
推荐指数
1
解决办法
3545
查看次数

如何与 SharedWorker 共享数据

互联网和 StackOverflow 上已经有很多关于 SharedWorker 的讨论和教程,但没有一个真正实现了最基本的目标——直接在两个共享 worker 之间传递数据。

对我来说,SharedWorker 相对于专用 Web Worker 的优势在于前者允许通过不同的选项卡、iframe 和线程进行直接通信。我尝试了以下方法:

(shared.html:)

<!DOCTYPE html><html><head></head><body>
<button onclick="init('a')">Initiate A</button>
<button onclick="init('b')">Initiate B</button>
<script>

var a,b;
function init(v) {
    if (v=='a'){
        a = (new SharedWorker('./shared.js')).port;
        a.start();
        a.postMessage({type:'start', port:b})
    } else {
        b = (new SharedWorker('./shared.js')).port;
        b.start();
        b.postMessage({type:'start', port:a});    // <== error here
    }
}

</script></body></html>
Run Code Online (Sandbox Code Playgroud)

(共享.js)

let peer = null;

onconnect = function (ev) {
    let port = ev.ports[0];
    port.onmessage = (e) => {
        if (e.data.type=='start' && e.data.port){
            peer=e.data.port;
        } else …
Run Code Online (Sandbox Code Playgroud)

javascript worker web shared-worker webapi

2
推荐指数
1
解决办法
691
查看次数

ASP.NET Core 3.0 上 WebAPI 响应的最大大小长度

我的控制器操作之一以 JSON 响应返回大量集合,当我向该控制器 WebAPI 发出请求时,不会返回响应。因此,我使用断点测试了此操作,并且集合正常填充。最后,我确信这是 WebApi 的问题,因为我已经通过多个客户端(WPF 和 Postman)测试了该控制器的操作,并且每个客户端都只是等待响应。我认为障碍是我的 WebAPI 的响应大小。我的 WebAPI 在 IIS Express 上运行

所以我有两个问题:

1)。ASP.NET Core 3.0 上 WebAPI 响应的最大长度是多少?
2)。如何增加 ASP.NET Core 3.0 上 WebAPI 响应的最大大小长度?

c# httpresponse iis-express asp.net-core webapi

2
推荐指数
1
解决办法
2万
查看次数

当 MediaRecorder 处于“录制”状态时添加 AudioTrack

我试图在 MediaRecorder 处于“录制”状态时将 mediaTrack 添加到 mediaStream

添加新曲目的代码如下:

activeStream.addTrack(newAudioTrack)
Run Code Online (Sandbox Code Playgroud)

之后事件(onstop)被触发。我怎样才能避免这种情况?

javascript webrtc web-mediarecorder webapi

2
推荐指数
1
解决办法
1806
查看次数

ASP.Net Core Web Api access-control-max-age 未在响应标头中发送

我在 Startup.cs 中有 SetPreFlightMaxAge。但 chrome“检查”>“网络”选项卡不会在响应标头中显示它。

启动.cs

app.UseCors(o =>
{
o.WithOrigins(allowedDomains.ToArray())
.SetPreFlightMaxAge(TimeSpan.FromMinutes(10))
.AllowAnyHeader()
.AllowAnyMethod()
.AllowCredentials()
});
Run Code Online (Sandbox Code Playgroud)

响应标头(GET 方法):除了一些其他标头之外,它还发送这些标头。下面第三行有一个 max-age,但这不是 Startup.cs 中设置的 10 分钟值

access-control-allow-credentials: true
access-control-allow-origin: ...
set-cookie: ...
strict-transport-security: max-age=2592000
vary: Origin,Accept-Encoding
Run Code Online (Sandbox Code Playgroud)

响应标头(OPTIONS 方法):

access-control-allow-credentials: true
access-control-allow-headers: ...
access-control-allow-origin: ...
set-cookie: ...
Run Code Online (Sandbox Code Playgroud)

c# asp.net-core webapi

2
推荐指数
1
解决办法
2406
查看次数

CoreNet60 Angular 总是返回 404 错误

我正在将用 netcore2 编写的应用程序移植到 6,角度为 13。在 Visual Studio 中运行时,每个 Web api 控制器/方法总是收到 404 错误

[ApiController]
[Route("[controller]")]
public class GetOptionsController : Controller
{
    private readonly GetOptionsService _getOptionsService;

    public GetOptionsController(GetOptionsService getOptionsService)
    {
        _getOptionsService = getOptionsService; 
    }

    [HttpGet]  
    public IActionResult GetOptions()
    {            
        var options = _getOptionsService.GetOptions();
        return  Ok(options);            
    }

}
}


    import { Injectable } from '@angular/core'; 
    import { HttpClient } from '@angular/common/http';  
    import { Observable } from 'rxjs'; 
    import { IOption } from '../interfaces/option';

 
  
@Injectable()
export class OptionsService {
   
    constructor(private http: HttpClient) { …
Run Code Online (Sandbox Code Playgroud)

c# .net-core asp.net-core angular webapi

2
推荐指数
1
解决办法
1166
查看次数

如何在.Net Core中生成OpenApi Client SDK项目

我们的客户为我们提供了他们所有 API 端点的 swagger 链接。我们有一个使用 VS 2022 和 .Net 6 的 .Net Core 项目。现在我们想要为相同的 .Net Core 解决方案生成一个 OpenAPI 客户端项目,以便我们通过 OpenAPI 项目调用客户端的 API 端点。

我遵循的步骤是:

  • 我从客户端下载了 swagger json 文件。
  • 我遵循了这个文档

正如该文档中提到的,首先,我使用此命令安装了 Open API

npm install @openapitools/openapi-generator-cli -g

然后,当我执行 OpenAPI Generator CLI 使用此命令生成 SDK 时,我收到错误“Java”未被识别为内部或外部命令

openapi-generator generate -i swagger.json -g csharp-netcore -o Api.Client.Sdk --additional-properties packageName=Api.Client.Sdk

c# openapi webapi

2
推荐指数
1
解决办法
6947
查看次数

如何在使用 MinimalApi 时配置 JSON 名称大小写策略

我正在尝试从我的最小 API 中获取结果,该 API 在我的 MVC Web 应用程序的端点中配置,我的 Get 操作配置如下:

            endpoints.MapGet(
                "HO-CFDZU4/api/Currency/Get", 
                [PermissionAuthorize(PermissionName.ReadCurrencyDictionary)] 
                async ([FromServicesAttribute] CurrencyService curency) =>
            {
                var result = await DataSourceLoader.LoadAsync(curency.Get(), new DataSourceLoadOptions());

                return Results.Ok(result);
            });
Run Code Online (Sandbox Code Playgroud)

结果我得到了对象的响应,其中属性名称更改为小写,并且它不适合我。我想在相同的情况下获得完全相同的名称,就像我返回表单操作一样。

为了在 MVC 中获得类似的效果,我使用了以下代码:

            services
            .AddMvc()
            .AddFluentValidation(x => x.RegisterValidatorsFromAssembly(AppDomain.CurrentDomain.GetAssemblies().Where(x => x.FullName.Contains("ApplicationCore")).Single()))
            .AddMvcLocalization()
            .AddMvcOptions(options =>{})
            .AddRazorRuntimeCompilation()
            .AddJsonOptions(options =>
            {
                options.JsonSerializerOptions.PropertyNamingPolicy = null;
                options.JsonSerializerOptions.ReferenceHandler = ReferenceHandler.IgnoreCycles;
            });
Run Code Online (Sandbox Code Playgroud)

在控制器中使用操作时,它为 Json 设置属性命名策略,但我不知道如何为minimalApi 设置相同的策略。

我尝试过的是设置[JsonPropertyName(name)]它运行良好,但我们有很多课程,我正在寻找更全局的解决方案。

我还尝试像这样全局配置 JsonOptions:

        services.Configure<JsonOptions>(options =>
        {
            options.JsonSerializerOptions.PropertyNamingPolicy = null;
            options.JsonSerializerOptions.ReferenceHandler = ReferenceHandler.IgnoreCycles;
        });
Run Code Online (Sandbox Code Playgroud)

但它什么也不做

c# .net-core asp.net-core webapi minimal-apis

2
推荐指数
1
解决办法
1069
查看次数