如果我们正在部署一个基本的WebApp / WebApi,那么 Microsoft 的这两个任务似乎执行相同的操作 - 部署到应用程序服务。
如何选择在新的 YAML 发布管道中使用哪一个?我只是想确保我使用的是最面向未来的版本 - 我有 25 个发布管道,除非有必要,否则不想重新执行它们。
帮助的编写方式很难通过比较功能来发现关键的“必备功能”。一些 Microsoft 在线示例同时使用这两种方法。两者在自述文件中仍被标记为“正在开发”,并且自上次签入以来均已使用超过 1 年。
我有一个子管道,它使用数据集从控制文件接收指令。这些说明定义了从哪个目录复制文件。
首先,此子管道通过源文件夹上的“获取元数据”活动检查文件是否存在。如果从 GetMetaData 返回一个或多个子项,它然后执行子管道来处理数据。
在控制数据集中,还有一个必需的 Y/N 字段,这意味着如果文件夹或文件不存在,我可以忽略错误。
如果文件夹不存在,GetMEtadata 将失败。如果它存在但没有文件,我会得到 0 个子项。因此,文件或文件夹丢失(错误或 0 个项目)会发生 2 种不同的情况。
在任何一种情况下,我都需要将 GetMetaData 的输出路由到检查是否需要文件的 IF。如果没有,则消耗错误并返回。如果需要,则引发错误。
不过,我找不到引发错误的方法。同样重要的是,是否有替代方法可以更好地与 ADF V2 设计配合使用?
非常感谢,马克。
这样做可能是不理想的:(一个大大简化的示例!)
[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.
我有一个控制台应用程序,它将使用 DI 为应用程序内的服务提供配置(选项模式)、日志记录和其他服务引用。
我有一个问题,即日志记录适用于 Info/Warning/Error/Critical,但没有显示Debug和Trace。我已将控制台级别设置为 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) 我有一个使用 MSI 标识运行的 Azure 数据工厂 V2 服务。此服务需要访问包含数千个文件夹和数百万个文件的 Data Lake Gen 1。
为了提高效率,我们为数据湖的根分配了一个组,该组具有 RX 权限,并且这些权限在整个树中被继承和默认。
我想将上述 ADF MSI 添加到该组,但我无法弄清楚如何通过门户 AAD 刀片。
我可以直接将此 MSI 分配给数据湖,但它随后必须更新数百万个文件,这很慢且容易出错(刀片需要在应用权限时保持打开状态,并且由于网络原因,这通常会在几个小时内失败毛刺)。
标记。
基本思想 - 我有一个无状态服务,通过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,并且它们不能很好地协同工作.
我正在尝试使用 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) 这是一项很酷的功能,允许应用程序通过环境值、Visual Studio Azure 服务身份验证或通过 MSI(如果在 Azure 上运行)获取令牌。它会自动逐步执行并找到有效的方法。如果您在本地运行并希望稍后使用 MSI 部署到 Web 应用程序,那就太好了。它从 MSI 或 Visual Studio 和其他一些地方获取令牌
它在工作时意外失败。我一直在与 MSFT 合作解决这个问题,我已经弄清楚发生了什么。我会发布一个答案。
我正在编写一个库和一个返回响应对象的库。我喜欢看几个例子,例如 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)