我有一个应用程序(.exe),它可以拾取文件并将其导入数据库。我必须将此设置移至 Azure 中。我熟悉 Azure SQL 和 Azure 文件存储。我不熟悉的是如何在 Azure 中执行应用程序。
我的应用程序从 Azure 数据库中读取行以确定文件的位置(在 Azure 文件存储中),然后将数据转储到指定的表中。我不确定此方案是否适合 Azure Scheduler,或者我是否需要应用服务来设置 WebJob。
我是否可以将我的应用程序直接放入 Azure 文件存储中,并将任务指向该位置来执行它(然后可能更容易解析要导入的文件的文件位置)。
谢谢。
我有一个 dotnet 核心应用程序。我正在 teamcity 中构建管道。一旦 teamcity 检测到源代码中的更改,它就会下载源代码并运行 dotnet Restore dotnet build
并将输出文件夹中的内容复制到 Azure 应用服务。
我相信要运行应用程序,我需要运行命令 dotnet nameoftheprojectdll.dll
但我如何在应用程序服务上运行此命令。我需要将此命令作为构建脚本的一部分运行。
teamcity continuous-deployment .net-core azure-web-app-service
我发现这个答案与这篇旧文章一致,但两者都不起作用。因此我来这里是为了询问一个适用于 VS2017 的新解决方案。我将更详细地解释:第一次定义虚拟目录(如“/site1”和物理文件夹“site\site1”)并尝试从 VS2017 发布,您会收到错误(无法写入指定路径)并且无法发布。然后,如果您进入控制台(从 Portal.azure.com)并使用“md site1”在 d:\site 下手动创建文件夹),则发布过程将正常工作(并且已在新文件夹下创建了许多文件)并且以“1 成功...”结束,但是当您浏览到新的 ..../site1 时,您会收到以下错误消息:“由于发生内部服务器错误,无法显示该页面。”
无法在网络上找到任何内容来解决此特定错误(在一份旧文档中,他们说这是由于 2 个项目(在同一解决方案中)的单独 git 存储库造成的,一个针对根文件夹,另一个针对虚拟目录,但我无法理解为什么不同的源代码控制在通过 VS2017 发布时会在生产中造成麻烦)...
有人知道如何解决这个问题吗?
按照 David Ebbo 的要求进行更新:我认为问题是 Azure 端的配置问题(其他文章没有解释在定义虚拟目录时必须通过控制台创建物理文件夹)和/或运行时错误(当物理文件夹是从VS2017作品创建发布流程并成功完成)。
以下是了解上下文的更多详细信息:1) Visual Studio 解决方案包含 2 个项目:一个“主项目”(带有“Hello world!”的空 .NET Core 项目),其发布配置文件针对 Azure 网站的根文件夹 + 另一个“子项目”(标准 MVC Core.NET 模板项目,无需自定义),发布配置文件针对同一 Azure 站点,并将“/site1”添加到“站点名称”和“站点 url”的末尾。2)如果我尝试将子项目发布到网站的根文件夹,一切正常(但当然我覆盖了“主项目”),因此这不是代码/版本问题。3)通过控制台,我可以看到文件夹 d:\home\site\site1 包含与主项目 d:\home\site\wwwroot 中存在的文件“类似”的文件。
git virtual-directory azure-web-app-service visual-studio-2017
我正在 Azure 应用服务上运行 .NET Core Web 应用程序(应用服务计划配置为使用 S1)。它是稳定的。
然而,我最近对生产运行了一个自动化测试,它在几分钟内导致了数百个错误。此后,应用服务长时间不可用。
我知道应用程序服务基本上使用 IIS,并且我知道 IIS 中有一个设置可以在短时间内因出现太多错误而关闭应用程序服务。我假设这是对我的应用程序生效的设置。
我的问题是:即使短时间内发生许多错误,如何防止 Azure 关闭我的应用服务?
我正在尝试使用存储连接字符串将一些测试值插入到 Azure 表中。当我尝试执行插入操作时,它显示错误,因为无法将 TableStorage.RunnerInputs 转换为 Microsoft.azure.cosmosDB.table.itableentity。我正在参考https://learn.microsoft.com/en-us/azure/cosmos-db/table-storage-how-to-use-dotnet来解决这个问题
*
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
CloudConfigurationManager.GetSetting("StorageConnectionString"));
//Create the table client.
CloudTableClient tableClient = storageAccount.CreateCloudTableClient();
//Create the CloudTable object that represents the "people" table.
CloudTable table = tableClient.GetTableReference("InputParameters");
table.CreateIfNotExists();
//Create a new customer entity.
RunnerInputs RunnerInput = new RunnerInputs("OnlyDate", "rowkey");
//CloudTable test = null;
RunnerInput.InputDate = "20180213";
//Inputvalue = "20180213";
//Create the TableOperation object that inserts the customer entity.
TableOperation insertOperation = TableOperation.Insert(RunnerInput);
//Execute the insert operation.
table.Execute(insertOperation);
Run Code Online (Sandbox Code Playgroud)
跑者级别
namespace TableStorage
{
public class …Run Code Online (Sandbox Code Playgroud) 我想要下一步:从我的网站能够启动虚拟服务器(Ubuntu、linux、windows 服务器)。我使用 AWS 进行了此操作,通过 IAM 可以轻松找到访问密钥和令牌。
如果可能的话,我想对 Azure 执行相同的操作,以获取访问密钥和令牌。我在这里找到了一些关于如何喜欢的教程:https://www.youtube.com/watch?v= ujzrq8Fg9Gc&t=51s 但它做了很多事情,我只需要密钥令牌和秘密令牌就能够访问虚拟主机并操纵它。
我看到还有 oAuth2,但为这个项目设置它太多了。
还有所谓的 azure 广告https://learn.microsoft.com/en-us/rest/api/
因此,任何帮助都会很好地找到轻松访问密钥和令牌来列出、创建、更新虚拟机。
也许是因为我有免费帐户?
更新:我找到了这个,它非常简单: https ://learn.microsoft.com/en-us/rest/api/compute/virtualmachines/createorupdate
只需说: PUT https://management.azure.com/subscriptions/ {subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{vmName}?api-version=2017-12-01
subscriptionID 如果我提供这个,就足够了吗?我在想应该有一些授权吗?
我有一个发布管道来部署一个 asp.net 核心 Web 应用程序。这是从 azure devops 上的一个简单的 asp.net web 部署模板创建的。Web 部署步骤仅指向工件放置文件夹的 .zip 文件并部署应用程序。
我想替换我的 appSettings.Staging.json 文件中的令牌,例如:

我正在使用令牌替换市场工具:https : //github.com/qetza/vsts-replacetokens-task并按照文档中的非常标准的方式进行设置:

我希望将“DummyValue”替换为“ActualValue”。
由于工件是一个 zip 文件,我添加了“文件提取器”任务来解压缩存档,然后让令牌替换任务目标该文件夹。根据日志,似乎令牌替换最终确实替换了一个值,但我无法直接访问这些资源来确定。
由于我现在正在提取文件,因此我将 web 部署任务指向了未归档文件所在的新文件夹,并且它已成功部署,但生成的 appsettings.Staging.json 文件仍然没有替换令牌。在部署作业的日志中,我看到了这一点:
2021-03-28T07:36:19.6554561Z 已启动使用 ZIP Deploy 的包部署。2021-03-28T07:38:08.8457706Z 已成功将 Web 包部署到应用服务。
似乎它仍在使用 ZIP 部署,我不确定它在哪里找到 zip 文件,因为 devops 日志中没有任何内容。
只是想知道是否有其他人经历过这种情况以及最好的方法是什么。
我想要实现的是使用 Linux 操作系统将 Angular 9 应用程序部署到 Azure 应用程序服务(Windows 不适合我,因为 Linux 更便宜)我使用 Node 14 运行时创建了 Linux Web 应用程序。部署应用程序后,我会看到 Azure 默认网页。我试图解决这个问题,因为它是在这里描述的
我在带有 Node 14 运行时的 Linux Web 应用程序上执行的步骤:
我加了这个
pm2 服务 /home/site/wwwroot --no-daemon --spa
到 AppService->Configuration->General Settings->Startup Command
已保存配置并重新启动应用服务但出现 pm2 not found 错误。
使用 ssh 连接到网络应用程序并运行
npm 安装 pm2 -g
重新启动应用服务,但仍然找不到 pm2。
问题是如何使用 Node 14 在 Linux 应用服务上托管 Angular 9?我应该修复找不到 pm2 的问题,还是可以使用其他方法(但仍然使用 Linux 操作系统)来解决这个问题?
问题:
我们有一个 .NET 5 WPF 应用程序,它有一个 EntityFramework Core 实体类文件DbEntities,它实现了DbContext. 我们在实例化它时使用构造函数注入。我们使用的选项之一是AddInterceptors将访问令牌附加到SqlConnection. 拦截器被称为AzureAuthenticationInterceptor。在注册服务时,我们希望传入ServiceProvider以便它在拦截器构造函数中可用,可用于获取实现访问令牌内存缓存的服务。
原因是我们有一个包含 50 多个类的项目,这些类都使用同一个DbEntities文件,在构造函数中使用 0 个参数。这已升级到 .NET 5,其中避免了依赖注入,因为需要将其应用于所有表单。因此, 以DbEntities具有 的形式实例化new DbEntities();。
但是,在这种情况下,我们正在实现访问令牌缓存,需要将其注册为服务。否则,如果我们每次创建 new 时都实例化缓存DbContext,那么缓存将被清除。
使用此方法实现访问令牌内存缓存https://mderriey.com/2020/09/12/resolve-ef-core-interceptors-with-dependency-injection/
我们只想对内存中的令牌缓存使用依赖注入。我们想到的唯一捷径就是ServiceProvider在拦截器的构造函数中传入,但是在ConfigureServices方法中并没有出现。
题:
可以通过ServiceProvider吗?如果没有,有没有其他方法可以在拦截器上实现依赖注入而无需更改50个类文件?
程序.cs
Public static void Main()
{
...
Host = Microsoft.Extensions.Hosting.Host.CreateDefaultBuilder()
.ConfigureAppConfiguration((context, builder) =>
{
builder.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true);
})
.ConfigureServices((context, services) =>
{
Configuration …Run Code Online (Sandbox Code Playgroud) c# dependency-injection azure-sql-database azure-web-app-service .net-5
我正在将一些功能从 netcore 3.1 迁移到 net5,以使用隔离模型。但是,我遇到了这种我尚未解决的不兼容问题;文档并没有让我找到解决方案。这是关于使用 Azure 函数在存储表中放置一行,此代码片段完美运行:
// netcoreapp3.1, works OK
[FunctionName("PlaceOrder")]
public static async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "post")]
OrderPlacement orderPlacement,
[Table("Orders")] IAsyncCollector<Order> orders)
{
await orders.AddAsync(new Order {
PartitionKey = "US",
RowKey = Guid.NewGuid().ToString(),
CustomerName = orderPlacement.CustomerName,
Product = orderPlacement.Product
});
return new OkResult();
}
Run Code Online (Sandbox Code Playgroud)
在 net5 中执行此操作的尝试与以下内容非常相似:
// net5.0 approach
[Function("PlaceOrder")]
public static async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "post")]
HttpRequestData req,
[Table("Orders")] IAsyncCollector<Order> orders)
{
var orderPlacement = await req.ReadFromJsonAsync<OrderPlacement>();
await orders.AddAsync(new Order {
PartitionKey = "US", …Run Code Online (Sandbox Code Playgroud)