我正在运行 dotnet core 2.0 控制台项目。尝试从 Docker 运行时遇到以下错误。
遇到致命错误。在“/app”中找不到执行应用程序所需的库“libhostpolicy.so”。
目前我正在构建许多小型API.其中许多项目共享一些基本的控制器逻辑.有没有办法将它们添加到nuget包中,并在启动时使用它们?
例如.喜欢添加Mvc:
IApplicationBuilder app;
....
app.UseMvc;
app.UseBasicApiVersionController();
Run Code Online (Sandbox Code Playgroud)
我们的想法是在所有微服务中都有版本端点.
例如:
http:// url/version
返回{"version":"1.0.0"}
如何将其变为nuget包?
因此,所有开发人员只需添加1行代码即可将此端点添加到其微服务中?我们正在使用dotnet核心.
不要自己创建nuget包:)
我对入门的猜测类似于:
public static IApplicationBuilder UseBasicApiVersionController(this IApplicationBuilder app)
{
if (app == null)
throw new ArgumentNullException("app");
..... // What should I do?
return app;
}
Run Code Online (Sandbox Code Playgroud)
*编辑:
如果您将一个控制器添加到nuget包项目,它将被自动检测.但这不是我想要的功能.
我可能有10个需要该控制器的服务.虽然有1-2个服务只需要其他版本控制逻辑.例如.面向App的客户不应该有"/ version"端点.
这就是为什么我想在启动时使用app.UseBasicApiVersionController();
我们正在使用ServiceStack(.netcore)作为我们的Web服务层,在一个尚未上线的开源项目中.我们计划迁移到.netcore2.0.我们于11月17日从https://github.com/ServiceStack/ServiceStack下载了servicestacks的master分支进行测试.但是由于以下异常我们陷入困境,servicestack项目没有启动.
我们对此做了一些研究,发现.Net Core没有toXmlString()和fromXmlString方法.请参阅https://github.com/dotnet/core/issues/874和https://github.com/dotnet/corefx/issues/23686.
需要来自servicestack社区的帮助.
$exception {System.PlatformNotSupportedException: Operation is not supported on this platform.
at System.Security.Cryptography.RSA.FromXmlString(String xmlString)
at ServiceStack.RsaUtils.ToPrivateRSAParameters(String privateKeyXml) in F:\ExpressBase\ExpressBase.Core\ServiceStack.Core\ServiceStack.Client\CryptUtils.cs:line 85
at ServiceStack.Auth.JwtAuthProviderReader.set_PrivateKeyXml(String value) in F:\ExpressBase\ExpressBase.Core\ServiceStack.Core\ServiceStack\Auth\JwtAuthProviderReader.cs:line 148
at ExpressBase.ServiceStack.AppHost.Configure(Container container) in F:\ExpressBase\ExpressBase.Core\ExpressBase.ServiceStack\Startup.cs:line 94
at ServiceStack.ServiceStackHost.Init() in F:\ExpressBase\ExpressBase.Core\ServiceStack.Core\ServiceStack\ServiceStackHost.cs:line 200
at ServiceStack.NetCoreAppHostExtensions.UseServiceStack(IApplicationBuilder app, AppHostBase appHost) in F:\ExpressBase\ExpressBase.Core\ServiceStack.Core\ServiceStack\AppHostBase.NetCore.cs:line 224
at ExpressBase.ServiceStack.Startup.Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) in F:\ExpressBase\ExpressBase.Core\ExpressBase.ServiceStack\Startup.cs:line 74} System.PlatformNotSupportedException
这是我们的Startup.cs中生成异常的行.
var jwtprovider = new MyJwtAuthProvider(AppSettings)
{
HashAlgorithm = "RS256",
PrivateKeyXml = EbLiveSettings.PrivateKeyXml,
PublicKeyXml = EbLiveSettings.PublicKeyXml, …Run Code Online (Sandbox Code Playgroud) 我为 SignalR 创建了一个小型演示项目。当我在没有 SSL 的情况下在 Nginx 后面发布我的项目时,这一切都奏效了。但是在我运行 Certbot 并将 SSL 添加到站点后,所有 SignalR 集线器/WebSockets 都停止工作。该网站可以在这里找到:
signalr.js:5053 WebSocket connection to 'wss://app.topswagcode.com/chatHub?id=v_UmTZyB9v962n44Wf2-Kg' failed:
(anonymous) @ signalr.js:5053
(anonymous) @ signalr.js:5034
step @ signalr.js:4995
(anonymous) @ signalr.js:4976
(anonymous) @ signalr.js:4970
__awaiter @ signalr.js:4966
WebSocketTransport.connect @ signalr.js:5016
HttpConnection.startTransport @ signalr.js:4149
(anonymous) @ signalr.js:4099
step @ signalr.js:3710
(anonymous) @ signalr.js:3691
(anonymous) @ signalr.js:3685
__awaiter @ signalr.js:3681
HttpConnection.createTransport @ signalr.js:4052
(anonymous) @ signalr.js:3970
step @ signalr.js:3710
(anonymous) @ signalr.js:3691
fulfilled @ signalr.js:3682
signalr.js:2150 [2021-06-11T06:43:20.004Z] Error: Failed to …Run Code Online (Sandbox Code Playgroud) TLDR: 有没有办法控制 AspNet Core / EF CORE Sql 连接中的连接池。我需要类似的东西:
pool: {
min: 0,
max: 1,
idle: 10000
}
Run Code Online (Sandbox Code Playgroud)
问题:
我有一个使用 AspNetCore 3.1 构建的无服务器 api,使用 EF core 进行数据访问。当服务器负载不重时,一切正常。但是,当我们收到适量的请求时,我们就会耗尽与 SQL 服务器的连接。因为他们没有被释放。数据库没有压力。CPU / RAM / IO 仍然处于“睡眠”状态,并且可以轻松满足请求。
花了一些时间阅读这个问题后,我找到了 2 个解决方案
我不太喜欢选项 A,因为我们已经有一个很大的实例,对于它的目的来说已经太大了。真的不需要浪费更多的 CPU/RAM
所以我唯一真正的选择是尝试访问连接池。
我的 Google 魔力并没有真正让我走得太远,而且我在公共规范中找不到任何东西。我发现的只是很久以前博客文章中的老式 ADO.NET。还有一些博客文章只是指出 EF Core 中的连接池很神奇,不用担心。直到现在在无服务器环境中我才担心这个问题。
如果我们不得不放弃 EF Core,我们真的会很讨厌,因为这将是应用程序的重大重写。
我陷入了死胡同.我有一个dotnet核心1.0.0应用程序我正在尝试启动和运行.它从linux和windows工作得很好.现在我想把它变成码头工人.我做了这个docker文件:
FROM microsoft/dotnet:1.0.0-preview2-sdk
COPY . /app
WORKDIR /app/app
RUN ["dotnet", "restore"]
ENTRYPOINT ["dotnet", "run"]
Run Code Online (Sandbox Code Playgroud)
它只是将代码复制到docker映像中的app文件夹并恢复依赖关系,然后运行它.当我尝试运行它时,它会启动,因为一切正常,打印的内容与Windows或Linux启动时相同.
用于运行项目的命令:
docker run --name dotNetWeb -p 8080:8080 kiksen1987/dotnetcore
Run Code Online (Sandbox Code Playgroud)
链接到代码:https: //github.com/kiksen1987/dotnetcore
链接到Docker镜像:https: //hub.docker.com/r/kiksen1987/dotnetcore/
我真的不知道出了什么问题.我或多或少采用了与99%的其他项目相同的方法.
任何改善这个问题的反馈都会很好:)
我正在开发一个当前项目,我们已经使用Identity Server进行身份验证.在这里,我们使用Access令牌访问microsoft Graph API以获取会议,个人资料图片和其他内容.
现在,我们希望与新的Outlook 365 API进行集成,以便在将来的写入任务中进行读取.
我正在尝试使用已存在的accesstoken从Outlook restapi获取Outlook任务:
{
"aud": "https://graph.microsoft.com",
"iss": "https://sts.windows.net/17e18230-55e1-4f60-8262-5c67e2b2ab11/",
"iat": 1145153145,
"nbf": 1491225024,
"exp": 1491258924,
"acr": "1",
"aio": "QSQA8/8DAFFFInSl+iIfvSXhA95NqTYRmKugpaLdvffNkba0L8N5x0U=",
"amr": [
"pwd"
],
"app_displayname": "AwesomeApp.Dev",
"appid": "0c2fgc75-f2ee-fas5-ae9f-fasd2s5d523fs",
"appidacr": "1",
"family_name": "Jesper Krægpøth Ryder",
"given_name": "Joshua",
"ipaddr": "208.67.222.222",
"name": "Joshua Jesper Krægpøth Ryder",
"oid": "a4586g1-d0215-3226-ar05-125463gasrqw5",
"platf": "3",
"puid": "654wf84yu3s1g6",
"scp": "Calendars.Read Calendars.Read.Shared Calendars.ReadWrite Directory.Read.All Files.ReadWrite Group.Read.All Mail.ReadWrite Mail.Send Tasks.Read User.Read User.ReadBasic.All User.ReadWrite",
"sub": "0s_x0JhaNb1QLpIM2Hldx7pSVkrpTgXKe4QPXXiRguQ",
"tid": "15e18430-54e9-4f60-8821-5c85e2b2ab77",
"unique_name": "jor@awesome.com",
"upn": "jor@awesome.com",
"uti": "65a2gasdrfasda_fasfa54153",
"ver": "1.0"
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试将 Nginx 设置到我的 ASPNET Core WebApi。但我总是遇到错误。
当我尝试检查我的配置时,我得到:
ubuntu@ip-172-26-12-97:~$ sudo nginx -t
nginx: [emerg] unknown directive "server" in /etc/nginx/sites-enabled/default:1
nginx: configuration file /etc/nginx/nginx.conf test failed
Run Code Online (Sandbox Code Playgroud)
我尝试查看以下问题:
nginx: [emerg] "http" 指令不允许在 /etc/nginx/sites-enabled/default:1
和
nginx: [emerg] 未知指令 " " in /etc/ nginx/sites-enabled/example.com:3
我的默认配置如下所示:
server {
listen 80;
location / {
proxy_pass http://localhost:5000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection keep-alive;
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
Run Code Online (Sandbox Code Playgroud)
安装 Nginx 并转到端口 80 上的默认 Nginx 服务器工作正常。但是当我开始上传自己的配置并进行更改时,它就崩溃了。
脚步:
sudo chown …Run Code Online (Sandbox Code Playgroud) 我有一个奇怪的问题,当我尝试使用 Nginx 托管我的 blazor WASM 项目时,我的样式被破坏了。我尝试遵循几个不同的指南,它们很相似并且对我来说有同样的问题。
我这里有代码: https: //github.com/TopSwagCode/Dotnet.IdentityServer/tree/master/src/BlazorClient
当我在本地调试或在本地发布并从 dotnetserve 提供服务时,我得到以下信息:
但是当我发布并尝试使用 Nginx 在 docker 中运行它时,我得到了这个:
我的按钮仍然在那里,但我看不到它们,因为它们是白色的。
我的 dockerfile 非常简单:
FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build-env
WORKDIR /app
COPY . ./
RUN dotnet publish -c Release -o output
FROM nginx:alpine
WORKDIR /var/www/web
COPY --from=build-env /app/output/wwwroot .
COPY nginx.conf /etc/nginx/nginx.conf
EXPOSE 80
Run Code Online (Sandbox Code Playgroud)
我的 nginx 配置
events { }
http {
include mime.types;
types {
application/wasm wasm;
}
server {
listen 80;
# Here, we set the location for Nginx to serve the …Run Code Online (Sandbox Code Playgroud) .net-core ×6
.net ×3
docker ×3
nginx ×3
asp.net-core ×2
asp.net-mvc ×1
c# ×1
certbot ×1
dockerfile ×1
servicestack ×1
signalr ×1