强制删除Service Fabric应用程序

3

在开发过程中,启动服务时出现异常导致应用程序陷入错误状态。这会阻止进一步的调试。我似乎也无法通过集群管理门户删除应用程序,它只是超时了。

我找到的唯一解决方法是重置集群,这需要几分钟时间,并且还会删除集群中的所有其他应用程序。

如何正确强制删除单个应用程序?


您可以使用门户轻松删除服务和应用程序。 - Peter Bons
@PeterBons 我的问题是应用程序没有响应来自门户的删除命令。我已经编辑了问题以使其更清晰。 - RagtimeWilly
啊,好的。不知道是否巧合,但我们今天早些时候遇到了同样的问题。我现在看到了你的评论,我们使用了这里的PowerShell脚本:https://dev59.com/gJTfa4cB1Zd3GeqPUK-m#35880883 - Peter Bons
2个回答

3
我创建了以下 PowerShell 脚本,似乎可以解决问题:
param([string]$applicationName = "SomeAppName", [string]$version = "1.0.0")

$applicationUri = "fabric:/" + $applicationName
$applicationTypeName = $applicationName + "Type"

Connect-ServiceFabricCluster localhost:19000

Write-Host ""
Write-Host "Removing $applicationUri from local cluster"

Remove-ServiceFabricApplication -ApplicationName fabric:/$applicationName

Write-Host ""
Write-Host "Removing $applicationTypeName (v$version) from local cluster"

Unregister-ServiceFabricApplicationType -ApplicationTypeName $applicationTypeName -ApplicationTypeVersion $version

Write-Host ""
Write-Host "Complete"

可以这样调用:

.\Delete-SF-App.ps1 -applicationName "MyService" -version "1.0.0"

编辑:

如果上述方法不起作用,则可以使用以下PowerShell命令来删除单个副本:

$nodes = Get-ServiceFabricNode

foreach($node in $nodes)
{
    $replicas = Get-ServiceFabricDeployedReplica -NodeName $node.NodeName -ApplicationName $applicationName
    foreach ($replica in $replicas)
    {
        Remove-ServiceFabricReplica -ForceRemove -NodeName $node.NodeName -PartitionId $replica.Partitionid -ReplicaOrInstanceId $replica.ReplicaOrInstanceId
    }
}

很不幸,这对我不起作用 - 我甚至已经添加了-Force -ForceDelete参数到Remove-ServiceFabricApplication中,但它仍然在我的本地开发集群上超时。 - Adriaan de Beer
@AdriaandeBeer 我添加了一个编辑,展示如何删除单个副本 - 如果你运行这个命令,它应该完全删除问题应用程序。 - RagtimeWilly

0

如果您不是使用Visual Studio进行开发和调试,请忽略此答案。

我知道这个问题已经有答案了,但是您尝试过在Visual Studio中更改应用程序调试模式设置为删除应用程序吗?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接