小编Gui*_*sdy的帖子

多个项目中的 Blazor 页面

我有 3 个项目 Projection.Server - 这包含主机文件和启动 Projection.Shared - 这包含控制器和页面(类库) Components.Shared - 这包含在整个项目中使用的所有组件(类库)

我的问题是,我在 Projection.Shared 中拥有该项目的所有页面,但我希望能够在 Components.Shared 中为我的登录页面拥有一个页面,当此解决方案扩展时但当我创建一个时,该页面可供多个项目使用Components.Shared 中的登录页面无法定向到该页面并显示:

抱歉,该地址没有任何内容。

我认为是这种情况,因为我的 App.Razor 中的 RouteData 位于 Projection.Shared 中,因此无法访问 Components.Shared 中的页面,有没有可能解决这个问题?

c# .net-core asp.net-core blazor

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

状态码不成功时无法读取HttpResponseMessage内容

我有一个使用 SMS REST API 的服务HttpClient

HttpClient http = this._httpClientFactory.CreateClient();
// Skipped: setup HttpRequestMessage
using (HttpResponseMessage response = await http.SendAsync(request))
{
    try
    {
        _ = response.EnsureSuccessStatusCode();
    }
    catch (HttpRequestException)
    {
        string responseString = await response.Content.ReadAsStringAsync(); // Fails with ObjectDisposedException
        this._logger.LogInformation(
            "Received invalid HTTP response status '{0}' from SMS API. Response content was {1}.",
            (int)response.StatusCode,
            responseString
        );
        throw;
    }
}
Run Code Online (Sandbox Code Playgroud)

API 返回错误,但我希望能够记录它。因此,我需要记录失败的状态代码(我可以从中读取response.StatusCode)和相关内容(其中可能包含其他有用的错误详细信息)。

此代码在await response.Content.ReadAsStringAsync()此异常的指令上失败:

System.ObjectDisposedException:无法访问已处理的对象。
对象名称:'System.Net.Http.HttpConnection+HttpConnectionResponseContent'。
    模块“System.Net.Http.HttpContent”,在 CheckDisposed
    模块“System.Net.Http.HttpContent”,在 ReadAsStringAsync

一些消息来源建议,当状态码不在成功范围(200-299)内时,您不应读取响应内容,但如果响应确实包含有用的错误详细信息呢?

使用的 .NET 版本:AWS lambda linux …

c# dotnet-httpclient .net-core

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

.NET HttpClient - 当响应头的 Content-Length 不正确时接受部分响应

我正在使用 .NET Core 3.1 开发 ASP.NET Web 应用程序。该应用程序从具有错误的外部网络服务器下载 mp3 文件:响应标头中的 Content-Length 报告的字节数高于 mp3 的实际字节数。

这是使用 curl 从该服务器下载文件的示例:

curl -sSL -D - "http://example.com/test.mp3" -o /dev/null
HTTP/1.1 200 OK
Cache-Control: private
Pragma: no-cache
Content-Length: 50561024
Content-Type: audio/mpeg
Content-Range: bytes 0-50561023/50561024
Expires: 0
Accept-Ranges: 0-50561023
Server: Microsoft-IIS/10.0
Content-Transfer-Encoding: binary
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Fri, 03 Jan 2020 23:43:54 GMT

curl: (18) transfer closed with 266240 bytes remaining to read
Run Code Online (Sandbox Code Playgroud)

因此,即使 curl 报告传输不完整,mp3 也完全下载了 50294784 字节,我可以在我尝试过的任何音频播放器中打开它。

我在我的 Web 应用程序中想要的是与 curl 相同的行为:忽略不正确的 Content-Length 并下载 …

c# dotnet-httpclient .net-core asp.net-core

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

如何有条件地从 ASP.NET Core 注册并添加到 ServiceCollection 中删除控制器

我们有标准的 ASP.NET Core 解决方案,Microsoft.Extensions.DependencyInjection需要根据配置设置注册某些控件。

某些ApiController继承自的示例ControllerBase及其所有相关操作仅应在某些bool为真时注册。

这可能吗?我看了看,services.AddMvc()但没有看到任何可以轻松让我执行以下操作的选项:

  • 防止某些人ExampleController被注册
  • 注册后删除ExampleController及其所有相关操作IServiceCollection

c# asp.net-core-mvc .net-core asp.net-core

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

在 ASP.NET Core 中创建单例服务的正确方法 - 是否必须使用 static 关键字?

这真的让我很困惑。没有什么可以阻止我们创建具有实例字段和实例方法的类,而不是创建具有静态字段和静态方法的类。两者都可以注册为单例。

是否有解决此问题的首选方法,为什么?

编辑:我不是在询问使用单例模式创建一个类。我问的是单例依赖注入类与注入同一个类但具有静态定义的成员/字段/方法/属性。

c# singleton static dependency-injection .net-core

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

如何显示导数

不确定这是本网站的正确部分,但我有一个问题。

所以,我使用 MathNet.Numerics 来计算导数。我想在控制台中显示它们。

代码示例

using System;
using MathNet.Numerics;

namespace math
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");
            Func<double,double> f = x => 3 * Math.Pow(x, 3) + 2 * x - 6;
            var test = Differentiate.DerivativeFunc(f, 1);
            Console.WriteLine(test.ToString());
            Console.ReadKey();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

.net c# math console mathnet-numerics

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