小编Iai*_*own的帖子

在Asp.Net Core中禁用分块

我正在使用Asp.Net Core Azure Web App为客户端提供RESTful API,而客户端无法正确处理分块.

是否Transfer-Encoding: chunked可以在控制器级别或web.config中完全关闭?

编辑:我正在返回一个像这样的JsonResult:

[HttpPost]
[Produces( "application/json" )]
public IActionResult Post( [FromBody] AuthRequest RequestData )
{
    AuthResult AuthResultData = new AuthResult();

    return Json( AuthResultData );
}
Run Code Online (Sandbox Code Playgroud)

azure-web-sites asp.net-core-mvc asp.net-core

16
推荐指数
1
解决办法
8512
查看次数

使用[FromBody]时获取原始POST数据

我有一个在ASP.NET Core 1.0 RC2上运行的控制器,我想将原始POST数据转储到遥测中,因为ApplicationInsights不会为您执行此操作.我的代码看起来像这样

[HttpPost]
[Produces("application/json")]
public IActionResult Post([FromBody] RequestClass RequestData)
{
    var stream = this.HttpContext.Request.Body;
    stream.Position = 0;
    using (var reader = new StreamReader(stream))
    {
        string body = reader.ReadToEnd();
        Telemetry.TrackTrace(body, Microsoft.ApplicationInsights.DataContracts.SeverityLevel.Information);
    }
    return Ok();
}
Run Code Online (Sandbox Code Playgroud)

但字符串"body"总是空着.如果我从函数签名中删除[FromBody]装饰,那么此代码可以工作,但RequestData对象只包含null,这不是我想要的.

我唯一能想到的就是将RequestData转换回Json字符串,但这感觉很笨拙而且很慢.

(编辑:POST数据是Json)

asp.net-core-mvc asp.net-core

7
推荐指数
1
解决办法
8457
查看次数

什么时候可以获得Application Insights操作ID?

我有一个写入EventHub的AspNetCore Web应用程序和一个从其中读取的Webjob。我希望该事务的两个部分的遥测在Application Insights中都具有相同的操作ID。

因此,当我要将数据发送到EventHub时,我尝试从TelemetryClient中拉出操作ID,例如

var myOperationId = MyTelemetryClient.Context.Operation.Id;
Run Code Online (Sandbox Code Playgroud)

但这总是使我无效。我找到了这篇文章,并尝试使用

var request.HttpContext.Items["Microsoft.ApplicationInsights.RequestTelemetry"] as RequestTelemetry;
Run Code Online (Sandbox Code Playgroud)

但再次为空。在需要时可以提取该值的任何指针吗?

我的代码如下所示:

public class Startup
{
    public void ConfigureServices( IServiceCollection IServices )
    {
        var builder = TelemetryConfiguration.Active.TelemetryProcessorChainBuilder;
        builder.Use((next) => new MyTelemetryProcessor(next));
        builder.Build();

        var aiOptions = new Microsoft.ApplicationInsights.AspNetCore.Extensions.ApplicationInsightsServiceOptions();
        aiOptions.EnableQuickPulseMetricStream = true;

        IServices.AddApplicationInsightsTelemetry( Configuration, aiOptions);
        IServices.AddMvc();
        IServices.AddOptions();

        TelemetryClient AppTelemetry = new TelemetryClient();
        AppTelemetry.InstrumentationKey = InsightsInstrumentationKey;
        IServices.AddSingleton(typeof(TelemetryClient), AppTelemetry);
    }
    public void Configure( IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory )
    {
        app.UseApplicationInsightsRequestTelemetry();
        app.UseApplicationInsightsExceptionTelemetry();

        app.UseMvc();

        var configuration = app.ApplicationServices.GetService<TelemetryConfiguration>();
        configuration.TelemetryInitializers.Add(new …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-core-mvc azure-application-insights

5
推荐指数
2
解决办法
3395
查看次数

使用Flurl设置默认的Polly策略

我目前正在一起使用Polly和Flurl,但是我有一个通用的重试策略,必须添加到每个请求中。我注意到Polly允许您使用AddPolicyHandler(...)设置默认值,但这需要IHttpClientBuilder,而且我看不到任何从Flurl掌握此方法的方法。

我以为可以重载DefaultHttpClientFactory,但这只能使我可以访问HttpClient,而不能访问IHttpClientBuilder。

我知道我可以制作自己的HttpClients并将它们传递给Flurl,但我宁愿避免这种情况,因为我希望Flurl管理它们的生命周期。

目前有什么方法可以做我想做的事吗?

flurl polly

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

Constexpr 如果测试一个模板参数

如果我有一个具有两个模板参数的类,有没有办法在其中一个参数上分支 if constexpr?在下面的示例中,我可以测试两个参数是否匹配,但我想要一种匹配任何版本的 MyTemplateClass 的方法,该版本将 char 作为其第一个参数。

#include <iostream>
#include <type_traits>

template<typename T,int32_t N>
class MyTemplateClass
{

};

template<typename C>
void DoStuff(const C& myObj)
{
    if constexpr(std::is_base_of_v<MyTemplateClass<char,64>, C>) // how do I remove the hardcoded 64?
    {
        // test passed!
    }
    else
    {
        static_assert(false);
    }
}


int main()
{
    MyTemplateClass<char, 64> passesObj;
    MyTemplateClass<char, 128> shouldPassObj;
    MyTemplateClass<wchar_t, 64> failsObj;

    DoStuff(passesObj);  // passes correctly
    DoStuff(shouldPassObj); // currently fails, want to make pass
    DoStuff(failsObj); // correctly fails
}
Run Code Online (Sandbox Code Playgroud)

c++ templates c++17 if-constexpr

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