Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Blazor应用程序-处理传入的HTTP Post请求_C#_Api_Rest_Blazor - Fatal编程技术网

C# Blazor应用程序-处理传入的HTTP Post请求

C# Blazor应用程序-处理传入的HTTP Post请求,c#,api,rest,blazor,C#,Api,Rest,Blazor,我有一个Blazor(Web服务器)应用程序,我想在我的应用程序中处理一个外部HTTP Post请求 基本上会有另一个网站(一个表单),它会在Http Post请求的正文(一个令牌)中向我的一个页面发送一些信息。我需要得到这些信息并相应地显示出来 有没有办法在Blazor中实现这一点 请:假设我不能请求他们更改数据的发送方式,并且我必须使用Blazor Web服务器 更新 我现在所做的是为了模拟: HTML: <form action="https://localhost:443

我有一个Blazor(Web服务器)应用程序,我想在我的应用程序中处理一个外部HTTP Post请求

基本上会有另一个网站(一个表单),它会在Http Post请求的正文(一个令牌)中向我的一个页面发送一些信息。我需要得到这些信息并相应地显示出来

有没有办法在Blazor中实现这一点

请:假设我不能请求他们更改数据的发送方式,并且我必须使用Blazor Web服务器

更新

我现在所做的是为了模拟:

HTML

<form action="https://localhost:44350/blazor-page" method="post" target="_blank">
    <input type="hidden" name="token-info" value="token-data" />    
    <input type="submit" value="Activate">
</form>
protected override async Task OnAfterRenderAsync(bool firstRender)
{
    await ResolveOrder();

    _navigationManager.NavigateTo("/activation", true);
}

private async Task ResolveOrder()
{
    string token = _httpContextAccessor.HttpContext.Request.Form["token-info"];

    if (!String.IsNullOrEmpty(token))
    {
        order = await _storeAPI.ResolveOrder(token);
    }
}
现在的问题是,我正在执行这段代码,但是_httpContextAccessor.HttpContext.Request.Method被更改为GET,我没有访问表单属性的权限

提前感谢


如果有人花时间将问题降级,至少要花时间解释原因???

因为您没有向我们提供任何关于如何设置发出API调用的控制器的信息,我将回答关于如何在razor视图中使用从API返回的数据的问题

@code{}
块中,您将在
OnAfterRenderAsync
方法的
if(firstRender){}
部分发出API调用

        List<Stuff> _stuff { get; set; }
    
    
        protected override async Task OnAfterRenderAsync(bool firstRender)
        {
            await base.OnAfterRenderAsync(firstRender);
    
            if (firstRender)
            {
                await FetchStuff();
                StateHasChanged();
            }
        }
    
    
        private async Task FetchStuff()
        {
            var result = await MyHttpService.PostAsync($"https://www.example.com/api/PostStuff", _stuff);
            
            //todo: do stuff with result
        }
List{get;set;}
AfterRenderAsync(bool firstRender)上受保护的重写异步任务
{
等待base.OnAfterRenderAsync(firstRender);
if(firstRender)
{
等待获取内容();
StateHasChanged();
}
}
私有异步任务FetchStuff()
{
var result=等待MyHttpService.PostAsync($)https://www.example.com/api/PostStuff",;
//todo:用结果做事情
}

对不起,这不是我要找的。我喜欢从外部接收请求,而不是从我的应用程序发出请求。无论如何,谢谢@amedriveroperez I更新了示例方法,使其更明显地类似于对外部API的调用。您仍然需要实现中间件来将
\u stuff
对象附加到httprequest主体,等等。我的朋友,您完全错了。我不需要调用任何API。我将从外部网站向我的应用程序中获取POST请求。请你重读这个问题好吗?抱歉@JasonD,但唯一具有对抗性的评论是你的。我只是让他知道他没有正确地理解这个问题。没有任何对抗的意图,而不是你的。问候
我需要获取此信息并相应地显示。
您是指实时吗?或者这个传入的POST请求仅仅需要更新数据库吗?听起来您可能只是在寻找像任何旧的.NET WebAPI一样的控制器端点。。。首先,我将如何处理这些数据现在并不重要。假设我将收到一个令牌,我想在页面上显示信息。你好@JeremyW您提出的问题有助于我找到解决方案。请尝试添加您的评论作为解决方案,以对其进行升级投票,并将其标记为解决方案。我已经成功了。谢谢Startup.cs ConfigureServices{services.AddMvc(options=>options.EnableEndpointRouting=false).SetCompatibilityVersion(CompatibilityVersion.Version_3_0);}Configure{app.UseMvcWithDefaultRoute();app.UseEndpoints(endpoints=>{//endpoints.MapControllers();});}控制器:[ApiController]公共类MyController:ControllerBase{[HttpPost]public IActionResult Post(){string token=Request.Form[“token”];返回重定向($”/gcpindex/{Guid.NewGuid());}