C# 为DatafactoryV2创建IntegrationRuntimeResource失败,请求失败
我对新的Datafactory管理API有一些问题。在创建IRM时,我收到了一个错误的请求,没有解释什么是错误的 下面是小代码示例。对可能出现的问题有什么建议吗C# 为DatafactoryV2创建IntegrationRuntimeResource失败,请求失败,c#,.net,azure-data-factory,C#,.net,Azure Data Factory,我对新的Datafactory管理API有一些问题。在创建IRM时,我收到了一个错误的请求,没有解释什么是错误的 下面是小代码示例。对可能出现的问题有什么建议吗 private async Task<IntegrationRuntimeResource> GetOrCreateIntegrationRuntime(string irmName) { Log.Information("Creating IntegrationRuntime Resource
private async Task<IntegrationRuntimeResource> GetOrCreateIntegrationRuntime(string irmName)
{
Log.Information("Creating IntegrationRuntime Resource with name {IrmName}", irmName);
var irmResource = new IntegrationRuntimeResource(new IntegrationRuntime(), type: IntegrationRuntimeType.SelfHosted, name: irmName);
return await AzureServiceFactory.GetDatafactoryManagementClient().IntegrationRuntimes
.CreateOrUpdateAsync(Config.ResourceGroupName, EnvironmentSettings.Datafactory.Name,
irmName, irmResource);
}
专用异步任务GetOrCreateIntegrationRuntime(字符串irmName)
{
Log.Information(“创建名为{IrmName},IrmName的IntegrationRuntime资源”);
var irmResource=new IntegrationRuntimeResource(new IntegrationRuntime(),类型:IntegrationRuntimeType.SelfHosted,名称:irmName);
返回Wait AzureServiceFactory.GetDatafactoryManagementClient().IntegrationRuntimes
.CreateOrUpdateSync(Config.ResourceGroupName、EnvironmentSettings.Datafactory.Name、,
irmName,irmResource);
}
根据我使用.net库的经验,当出现错误时,您不会得到任何解释,在这些情况下,我所做的是尝试从powershell中创建它,以获取有关错误的更多详细信息,您可以在命令末尾添加-Verbose,以从shell中逐步获取详细信息
从powershell创建IR的基本脚本是:
$SubscriptionName = ""
$ResourceGroupName = ""
$DataFactoryName = ""
$DataFactoryLocation = "eastus2"
$SelfHostedIntegrationRuntimeName = ""
Login-AzureRmAccount
Select-AzureRmSubscription -SubscriptionName $SubscriptionName
Set-AzureRmDataFactoryV2IntegrationRuntime -DataFactoryName $DataFactoryName -Name $SelfHostedIntegrationRuntimeName -ResourceGroupName $ResourceGroupName -Type SelfHosted -Location $DataFactoryLocation
填充值并执行,它将使您登录,然后选择订阅,最后尝试创建集成运行时。如果仍然出现错误,请记住在最后一个命令的末尾添加-Verbose
干杯
编辑:刚刚记住,位置是一个必须具备的价值!您的代码可能因此而失败,因为库没有指定这一点。我不完全确定这是否适用于自托管IRs,但对于托管类型IRs来说,这肯定是必须的。所以我想我应该拿出fiddler,用Martin的例子来找出缺失的内容。事实证明,即使API允许指定IRM的类型,它也会完全忽略它。Integrationruntime的类型被序列化为类型 因此-更新IRM的代码如下所示
public async Task<IntegrationRuntimeResource> CreateorUpdateIntegrationRuntime(string irmName)
{
Log.Information("Creating IntegrationRuntime Resource with name {IrmName}", irmName);
var irmResource = new IntegrationRuntimeResource(new SelfHostedIntegrationRuntime(),
type: IntegrationRuntimeType.SelfHosted, // this is ignored by the API but persisted for my sanity (or an api upgrade)
name: irmName);
return await AzureServiceFactory.GetDatafactoryManagementClient().IntegrationRuntimes
.CreateOrUpdateAsync(Config.ResourceGroupName, EnvironmentSettings.Datafactory.Name,
irmName, irmResource);
}
公共异步任务CreateorUpdateIntegrationRuntime(字符串irmName)
{
Log.Information(“创建名为{IrmName},IrmName的IntegrationRuntime资源”);
var irmResource=新的IntegrationRuntimeResource(新的SelfHostedIntegrationRuntime(),
type:IntegrationRuntimeType.SelfHosted,//API将忽略此项,但为了我的理智(或API升级)将其保留
名称:irmName),;
返回Wait AzureServiceFactory.GetDatafactoryManagementClient().IntegrationRuntimes
.CreateOrUpdateSync(Config.ResourceGroupName、EnvironmentSettings.Datafactory.Name、,
irmName,irmResource);
}
谢谢!工作得很有魅力。