问题标签 [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.
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 定义中引用打包的可执行文件?
任何见解将不胜感激!
.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 上执行相同操作,输出是正确的。有没有人见过这种行为,更好的是,可以提出修复或解决方法的建议?
一些可能有趣的系统信息
.net - 使用路径前缀在生产环境中运行 asp.net core 应用程序
我有一个asp.net core web api,我可以从命令行开始(在 linux 主机上)
这将启动一些监听的网络服务器localhost:5000
(默认情况下)。假设我有一个ValuesController
监听路径/values/
。因此,我可以从中获得我的价值观http://localhost:5000/values/
,一切都很好。
我现在需要的是为api
api 中的所有本地路径添加一个前缀,因此值控制器将响应: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 有自己的容器,它从上面的命令开始 - 因此缺少前缀,我需要以某种方式将其添加回来。
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 运行的
我不确定这样做的最佳方法是什么:
- 尝试以具有 sudo 权限的用户身份一起启动一个新的 SSH 会话。(我不知道该怎么做。
- 将 sudo 与 www-data 用户一起使用(似乎不太安全,因为它增加了使用 www-data 用户的任何其他内容的权限)。
只要有 root 权限,运行这样的命令就可以更改用户的密码:
感谢您的任何建议。
c++ - 通过 dotnet 在 linux 上调用 C++ 库
我第一次尝试从 Linux 上的 dotnet 服务调用 C++ 包装函数。
C++代码:
}
c#代码:
dotnet 服务运行良好,我可以进行测试 GET。我也可能遇到 myFunc 并且 funcB 的返回看起来是正确的。但是当 mystring 返回一个分段错误(核心转储)时,一切都崩溃了。似乎即使我将 mystring 返回为“test”,程序也会以同样的方式崩溃。我错过了什么?