小编Mar*_*rkD的帖子

“Azure Web 应用程序部署”与“部署 Azure 应用程序服务”

如果我们正在部署一个基本的WebApp / WebApi,那么 Microsoft 的这两个任务似乎执行相同的操作 - 部署到应用程序服务。

AzureWeb应用程序V1

AzureRmWebAppDeploymentV4

如何选择在新的 YAML 发布管道中使用哪一个?我只是想确保我使用的是最面向未来的版本 - 我有 25 个发布管道,除非有必要,否则不想重新执行它们。

帮助的编写方式很难通过比较功能来发现关键的“必备功能”。一些 Microsoft 在线示例同时使用这两种方法。两者在自述文件中仍被标记为“正在开发”,并且自上次签入以来均已使用超过 1 年。

azure-devops azure-pipelines

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

如何从 ADFV2 中的 if 活动引发错误?

我有一个子管道,它使用数据集从控制文件接收指令。这些说明定义了从哪个目录复制文件。

首先,此子管道通过源文件夹上的“获取元数据”活动检查文件是否存在。如果从 GetMetaData 返回一个或多个子项,它然后执行子管道来处理数据。

在控制数据集中,还有一个必需的 Y/N 字段,这意味着如果文件夹或文件不存在,我可以忽略错误。

如果文件夹不存在,GetMEtadata 将失败。如果它存在但没有文件,我会得到 0 个子项。因此,文件或文件夹丢失(错误或 0 个项目)会发生 2 种不同的情况。

在任何一种情况下,我都需要将 GetMetaData 的输出路由到检查是否需要文件的 IF。如果没有,则消耗错误并返回。如果需要,则引发错误。

不过,我找不到引发错误的方法。同样重要的是,是否有替代方法可以更好地与 ADF V2 设计配合使用?

非常感谢,马克。

azure-data-factory-2

7
推荐指数
2
解决办法
5374
查看次数

WebApi2 IHttpActionResult强类型返回值

这样做可能是不理想的:(一个大大简化的示例!)

[Serializable]
public class MyRecord
{
    public string key {get; set;}
    public string data {get; set;}
}

public async Task<IHttpActionResult> Get(string SomeKey)
{
    if(ExistsInDB(SomeKey))
    {
        return Ok(SomeRecordFromDB(SomeKey));  //SomeRecord() returns a POCO MyRecord.
    }
    else
    {
        //I know I can return NotFound() but not the focus of my Q
        return Ok(false);  //returns "False"
    }
}
Run Code Online (Sandbox Code Playgroud)

有效地表明对返回类型没有编译时错误检查。这个例子将返回一个JSon序列化的POCO类(在我的accept标头上设置了JSon),或者返回文本“ False”,这给客户端增加了类型检查的负担。

我不是故意设计的,但是我的团队正在从asmx / svc 重构大量代码,并且错误不断蔓延。当编译器帮助捕获这类错误而不是等待模块或单元测试时,我喜欢它。

返回使用强类型方法签名的正确方法(避免使用IHttpActionResult和Ok(),NotFound()等帮助器IHttpActionResult<T>吗?还是可以使用诸如a之类的 方法来确保返回正确的类型?

M.

c# generics httpresponse asp.net-web-api2

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

在 DI 容器中创建日志记录时,netcore 2.0 不记录跟踪和调试

我有一个控制台应用程序,它将使用 DI 为应用程序内的服务提供配置(选项模式)、日志记录和其他服务引用。

我有一个问题,即日志记录适用于 Info/Warning/Error/Critical,但没有显示DebugTrace。我已将控制台级别设置为 Trace。如果我只是创建一个记录器工厂,则会显示所有日志。

听起来它正在使用默认值。对于在 DI 服务集合中创建的记录器,是否还有其他方法可以配置日志级别?

我已尝试在本文中提到的服务集合上添加处置,编辑 2 链接,但没有运气。

using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Logging.Console;
using System;

namespace DownloadClientData.App
{
    class Program
    {
        static int Main(string[] args)
        {
            //***if I use this way to create the logger in the DI container, debug and trace messages are not displayed
            var serviceCollection = new ServiceCollection();
            serviceCollection.AddLogging();

            //tried this alternative too - no change...
            //serviceCollection.AddLogging(LoggingBuilder => LoggingBuilder.AddFilter<ConsoleLoggerProvider>("All Categories", LogLevel.Trace));
            var serviceProvider = serviceCollection.BuildServiceProvider();
            var …
Run Code Online (Sandbox Code Playgroud)

logging .net-core-2.0

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

是否可以将系统分配的托管服务标识添加到 AAD 组?

我有一个使用 MSI 标识运行的 Azure 数据工厂 V2 服务。此服务需要访问包含数千个文件夹和数百万个文件的 Data Lake Gen 1。

为了提高效率,我们为数据湖的根分配了一个组,该组具有 RX 权限,并且这些权限在整个树中被继承和默认。

我想将上述 ADF MSI 添加到该组,但我无法弄清楚如何通过门户 AAD 刀片。

我可以直接将此 MSI 分配给数据湖,但它随后必须更新数百万个文件,这很慢且容易出错(刀片需要在应用权限时保持打开状态,并且由于网络原因,这通常会在几个小时内失败毛刺)。

标记。

azure-data-lake azure-managed-identity azure-data-factory-2

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

服务结构多个通信监听器

基本思想 - 我有一个无状态服务,通过http实现Owin通信监听器,为基于WebApi的公共客户端提供服务.我想添加第二个侦听器,它将使用内置的ServiceRemotingListener()通过Rpc在集群内接收请求.原因是我不希望这个监听器是公共的,因为它为无状态服务实现了非公共管理接口.这是设置......:

        protected override IEnumerable<ServiceInstanceListener> CreateServiceInstanceListeners()
    {
        return new[]
        {
            new ServiceInstanceListener(initParams => new OwinCommunicationListener("MyWebService", new Startup(_options, this), initParams),"MyServiceHttp"),
            new ServiceInstanceListener(initParams => new ServiceRemotingListener<Interfaces.IConfig>(initParams, this),"MyServiceRpc")           
        };
    }
Run Code Online (Sandbox Code Playgroud)

当我添加第二个监听器时,我得到启动应用程序的异常...

                 this.serverHandle = WebApp.Start(this.listeningAddress, appBuilder => this.startup.Configuration(appBuilder));
Run Code Online (Sandbox Code Playgroud)

抛出异常:抛出System.dll Exception中的'System.Net.Sockets.SocketException':System.ServiceModel.dll中的'System.ServiceModel.CommunicationException'抛出异常:抛出System.ServiceModel.dll异常中的'System.ServiceModel.CommunicationException'异常:System.ServiceModel.Internals.dll中的'System.ServiceModel.CommunicationException' - 多次重复---抛出异常:System.Fabric.dll中的'System.ServiceModel.CommunicationException'

(不知道如何获取异常细节.我的"try {}"周围没有捕获异常.)

一旦处于此状态,我会在服务尝试自动重启时获得后续异常 - 错误与端口共享有关.

我能做些什么来使WebApi通信监听器与ServiceRemotingListener一起工作?我在这一点上假设,在引擎盖下,ServiceRemotingListener也正在使用http,并且它们不能很好地协同工作.

azure-service-fabric

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

无法在 DevOps 步骤中设置 powershell 输出变量

我正在尝试使用 powershell 脚本中的输出变量。我使用经典 UI 在线使用 Devops,并在发布管道中尝试了 powershell 4.* 和 Powershell 5.* 任务。

我正在使用一个自托管代理,它可以正常工作并执行许多其他构建和发布 powershell 的操作。Azure Powershell 模块版本 3.5.0(现在不使用 4.x 是有原因的)。

为了简化它,这是我的测试内联脚本总共......:

Write-Host '##vso[task.setvariable variable=MobileAppInsightsKey;isOutput=true;]thisisthekey'
Write-Host "This is host"

Write-Output '##vso[task.setvariable variable=MobileAppInsightsKey;isOutput=true;]thisisthekey'
Write-Output "This is output"
Run Code Online (Sandbox Code Playgroud)

以下是 Azure powershell 任务的输出。(4.*)

2020-07-01T00:06:57.2970494Z ##[section]Starting: Azure PowerShell script: InlineScript
2020-07-01T00:06:57.3335882Z 
==============================================================================
2020-07-01T00:06:57.3336692Z Task         : Azure PowerShell
2020-07-01T00:06:57.3337292Z Description  : Run a PowerShell script within an Azure environment
2020-07-01T00:06:57.3337566Z Version      : 4.171.1
2020-07-01T00:06:57.3338039Z Author       : Microsoft Corporation
2020-07-01T00:06:57.3338575Z Help         : https://aka.ms/azurepowershelltroubleshooting
2020-07-01T00:06:57.3338930Z 
==============================================================================
2020-07-01T00:06:58.5902105Z ## …
Run Code Online (Sandbox Code Playgroud)

azure azure-powershell azure-devops

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

Visual Studio dev 中的 DefaultAzureCredential 找不到合适的用户

这是一项很酷的功能,允许应用程序通过环境值、Visual Studio Azure 服务身份验证或通过 MSI(如果在 Azure 上运行)获取令牌。它会自动逐步执行并找到有效的方法。如果您在本地运行并希望稍后使用 MSI 部署到 Web 应用程序,那就太好了。它从 MSI 或 Visual Studio 和其他一些地方获取令牌

它在工作时意外失败。我一直在与 MSFT 合作解决这个问题,我已经弄清楚发生了什么。我会发布一个答案。

visual-studio azure-active-directory azure-web-app-service

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

为什么 C# 方法会返回抽象类?

我正在编写一个库和一个返回响应对象的库。我喜欢看几个例子,例如 MSFT 如何做到这一点。

我查看了 Azure BlobClient 删除方法,该方法返回 Azure.Response() 对象,该对象本身被标记为抽象对象,但我可以像使用任何实例化对象一样使用 Response 对象。

var response = blobClient.Delete(...)
if(response.Status ==206)
{
    etc
Run Code Online (Sandbox Code Playgroud)

我不理解实现 - 这个 delete 方法(它在 BlobClientBase 基类上是虚拟的,但似乎没有被 BlobClient 覆盖)返回一个抽象类。

问:它如何被实例化以便我直接使用它?可能我在这里遗漏了一些面向对象的理论 - 提前感谢您的任何见解。

从 BlobClientBase 元数据...

public class BlobBaseClient        
{
...
public virtual Response Delete(DeleteSnapshotsOption snapshotsOption = DeleteSnapshotsOption.None, BlobRequestConditions conditions = null, CancellationToken cancellationToken = default);
Run Code Online (Sandbox Code Playgroud)

从 Azure.Storage.Blobs 元数据...

public class BlobClient : BlobBaseClient
Run Code Online (Sandbox Code Playgroud)

Response 的定义如下,我假设抽象意味着 Response 缺少一些实现(例如它自己的抽象属性和方法)。

来自 Azure.Core 元数据....

public abstract class Response : IDisposable
{
    protected Response();

    public …
Run Code Online (Sandbox Code Playgroud)

c#

-3
推荐指数
1
解决办法
89
查看次数