问题标签 [dotnet-linux]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
852 浏览

docker - 在 dotnet SDK 和 Docker 容器上

这个问题应该很简单。

假设您正在尝试运行 Asp.Net Core Web Api。该应用程序将在干净安装的 Linux 内的 Docker 容器内运行(味道并不重要)。该容器位于 Kubernetes 集群中的 POD 中,该集群带有 docker 工具。

Dockerfile 需要以特定版本的 aspnetcore 为目标,看起来像这样:

测试一下,我运行一个 Docker 命令......

在此处输入图像描述

所以我难倒的是这个;我假设的 ENTRYPOINT 定义中的“dotnet”命令正在运行.Net Core SDK。

如果此 Linux 代理上的容器未安装 SDK,或者安装的 SDK 是您尝试使用的 SDK 的旧版本,您将如何将其用于 docker build?本质上,入口点中的“dotnet”命令指的是一个不存在的程序?

我是否也应该将 SDK 与容器一起打包?如果是这样,该行是否应该读取ENTRYPOINT ["./dotnet", "run"]因为它在 Linux 上?如果是这样,我还需要执行哪些其他步骤来打包 SDK?

我的假设是 SDK 已经用 microsoft/aspnetcore:1.1 打包在容器中?如果是这样,有没有办法在 ENTRYPOINT 定义中引用打包的可执行文件?

任何见解将不胜感激!

0 投票
2 回答
129 浏览

.net - GNU/Linux 上的 dotnet 捆绑后 css 中的错误路径

尝试将 Web 项目从 Windows 上的 dotnet 移植到 GNU/Linux 上的 dotnet。C# 代码工作正常,但我在缩小dotnet bundle. 在缩小的输出 css 中,例如图像的路径被替换为 css 文件本身的路径。

我已将其简化为可以重现问题的小型测试用例。

使用以下文件创建一个空目录(查看out.min.css并将完整的文件系统路径与后台 url 进行比较in.css):

项目.json

捆绑配置.json

在.css

然后运行dotnet bundle生成以下文件:

out.min.css

background:url()应该指的是,bg.png但它指的是 css 文件本身。使用相同版本的 dotnet 在 Windows 上执行相同操作,输出是正确的。有没有人见过这种行为,更好的是,可以提出修复或解决方法的建议?

一些可能有趣的系统信息

0 投票
1 回答
3528 浏览

.net - 使用路径前缀在生产环境中运行 asp.net core 应用程序

我有一个asp.net core web api,我可以从命令行开始(在 linux 主机上)

这将启动一些监听的网络服务器localhost:5000(默认情况下)。假设我有一个ValuesController监听路径/values/。因此,我可以从中获得我的价值观http://localhost:5000/values/,一切都很好。

我现在需要的是为apiapi 中的所有本地路径添加一个前缀,因此值控制器将响应:localhost:5000/api/values

我找不到一种优雅的方式来做到这一点。显然我可以在控制器的路由配置中更改它——但这是非常多余的,需要进行大量更改,因为我们有很多控制器,并且我们[Route(..)]在控制器本身上使用属性。

我已经在我的 webapi 项目applicationUrl的文件中看到了该属性。launchsettings.json显然,它包含用于 Visual Studio 调试/启动的配置。在那里添加一个前缀(通过项目属性>调试)工作正常并且完全符合我的需要,但这仅适用于从 VisualStudio(即dotnet run)启动它。在生产环境中,我只有dotnet publish可用的工件 - launchsettings.json文件没有复制到那里,似乎没有办法将这样的文件提供给dotnet [assembly]启动命令(如 dotnet run)。


为什么我需要这个的一些背景知识:让 api 控制器监听的模式/来自 IIS,因为在站点的子文件夹中添加应用程序是很常见的,它处理路径前缀部分。我现在使用 docker 部署我的应用程序,并且 api 有自己的容器,它从上面的命令开始 - 因此缺少前缀,我需要以某种方式将其添加回来。

0 投票
1 回答
107 浏览

asp.net-core - 在 Linux 上运行的 ASP.NET Core 5 Web 应用程序 - 以与 www-data 不同的用户身份运行 ssh 命令

我有一个在 Linux (Apache) 上运行的 ASP.NET Core 5 Web 应用程序,它通常运行良好。我希望它能够更改某些 Linux 用户的密码。基本上,登录到 Web 应用程序的用户可以更改他们用于 SFTP 的相应 Linux 密码。

我可以从 Web 应用程序运行 ssh/bash 命令,但它们是使用用户 www-data 运行的

我不确定这样做的最佳方法是什么:

  1. 尝试以具有 sudo 权限的用户身份一起启动一个新的 SSH 会话。(我不知道该怎么做。
  2. 将 sudo 与 www-data 用户一起使用(似乎不太安全,因为它增加了使用 www-data 用户的任何其他内容的权限)。

只要有 root 权限,运行这样的命令就可以更改用户的密码:

感谢您的任何建议。

0 投票
1 回答
30 浏览

c++ - 通过 dotnet 在 linux 上调用 C++ 库

我第一次尝试从 Linux 上的 dotnet 服务调用 C++ 包装函数。

C++代码:

}

c#代码:

dotnet 服务运行良好,我可以进行测试 GET。我也可能遇到 myFunc 并且 funcB 的返回看起来是正确的。但是当 mystring 返回一个分段错误(核心转储)时,一切都崩溃了。似乎即使我将 mystring 返回为“test”,程序也会以同样的方式崩溃。我错过了什么?