升级应用程序时,该Test-ServiceFabricApplicationPackage
命令会为版本号未更改的每个代码包抛出错误(它表示内容已更改,即使代码尚未更改).我知道有一个功能允许创建部分包,但我无法使用它.我的问题是:
ServiceManifest.xml
文件?)Test-ServiceFabricApplicationPackage
(图像存储URL是什么?如何将该参数传递给标准部署脚本?)我很欣赏一个彻底的例子.
我有一个包含以下内容的Visual Studios解决方案:
无状态服务项目使用基于配置的依赖注入,这意味着依赖项与项目本身松散耦合,而不是实际的VS"项目/编译依赖项".
我想继续使用Visual Studios,但是当我部署这个项目时,它不知道程序集依赖性(因为它们只在DI配置中定义),因此它不会打包必要的文件并抛出异常尝试执行依赖注入.
ApplicationManifest.xml文件中是否有任何方法或Visual Studios提供的其他许多XML文件之一,我可以指定其他文件(即我的依赖程序集)作为部署的一部分发布到Service Fabric?
理想情况下,我想将此文件自动生成为自动构建脚本的一部分.
我刚刚将一个带有LoadBalancer的安全Service Fabric Cluster(EncryptAndSign)部署到Azure Subscription.部署需要一些时间,但它按预期工作.我也可以通过PowerShell连接到集群:
$connectionEndpoint = ("{0}.{1}.cloudapp.azure.com:19000" -f
"mycluster", "somewhere")
Connect-serviceFabricCluster -ConnectionEndpoint $connectionEndpoint `
-KeepAliveIntervalInSec 10 `
-X509Credential `
-ServerCertThumbprint "..." `
-FindType FindByThumbprint `
-FindValue $clusterCertificate.Thumbprint `
-StoreLocation CurrentUser -StoreName My
Run Code Online (Sandbox Code Playgroud)
我也可以使用VisualStudio通过端口19000将应用程序部署到群集.在Azure门户中,一切看起来都很好,没有警告,没有错误.
不幸的是,我无法通过端口19080连接到资源管理器.当我尝试通过LoadBalancer连接时,我收到一个连接超时.因此,建立了与群集中某个节点的RDP连接,并尝试通过本地访问资源管理器
localhost:19080/Explorer
Run Code Online (Sandbox Code Playgroud)
但是在这里我收到一个Http-Error 403(Forbidden),它可能是通过Load-Balancer连接超时的原因(因为探测器总是接收403).收录Azure文档:
"如果您尝试连接到安全群集上的Service Fabric Explorer,您的浏览器将要求您提供证书以获取访问权限."
好吧,我没有被提示提出任何证书.我错过了什么?配置有什么特别之处吗?提前致谢.
我正在尝试使用PowerShell将Service Fabric应用程序发布到Azure.我想连接到集群,然后调用脚本"Deploy-FabricApplication.ps1"(在visual studio中创建新项目时生成的脚本)
为此,我创建了新的脚本文件,负责与集群连接,然后从同一个脚本文件中调用"Deploy-FabricApplication.ps1".
启动我的脚本后,我收到以下错误:
Get-ServiceFabricClusterManifest : Cluster connection instance is null
At C:\Program Files\Microsoft SDKs\Service Fabric\Tools\PSModule\ServiceFabricSDK\Publish-UpgradedServiceFabricApplication.ps1:116 char:28
+ $clusterManifestText = Get-ServiceFabricClusterManifest
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ResourceUnavailable: (:) [Get-ServiceFabricClusterManifest], NullReferenceException
+ FullyQualifiedErrorId : GetClusterConnectionErrorId,Microsoft.ServiceFabric.Powershell.GetClusterManifest
Run Code Online (Sandbox Code Playgroud)
在连接脚本和Deploy-FabricApplication.ps1中,我调用"Test-ServiceFabricClusterConnection",在两个脚本中它也在两个脚本中返回True我称之为"Get-ServiceFabricClusterManifest",在这两种情况下它都返回给我清单但是当我添加时"Test-ServiceFabricClusterConnection"到"Publish-UpgradedServiceFabricApplication.ps1"然后它返回了与前面提到的相同的错误,但是对于"Test-ServiceFabricClusterConnection"调用.
连接脚本的代码:
Param
(
[String]
$PublishProfileFile,
[String]
$ApplicationPackagePath,
[Switch]
$DeployOnly,
[Boolean]
$UnregisterUnusedApplicationVersionsAfterUpgrade,
[String]
[ValidateSet('None', 'ForceUpgrade', 'VetoUpgrade')]
$OverrideUpgradeBehavior = 'None',
[String]
[ValidateSet('Never','Always','SameAppTypeAndVersion')]
$OverwriteBehavior = 'Never',
[Switch]
$SkipPackageValidation,
[String]
$ConnectionEndpoint,
[String]
$ServerCertThumbprint,
[String]
$FindType,
[String]
$FindValue,
[String]
$StoreLocation,
[String]
$StoreName
)
$connectArgs = @{ ConnectionEndpoint = $ConnectionEndpoint; …
Run Code Online (Sandbox Code Playgroud) 在传统的控制台应用程序中打开到本地数据库的SQL连接时,我没有任何问题,但是当我尝试在Service Fabric中运行的无状态服务中执行相同的操作时,我收到登录错误.
我收到的错误是 "Login failed for user 'WORKGROUP\\NICK$'."
这是我用来连接的代码
using (var con = new SqlConnection("Server=.;Trusted_Connection=True;Database=AddressBook"))
{
try
{
con.Open();
}
catch (Exception e)
{
}
}
Run Code Online (Sandbox Code Playgroud)
当我尝试将该用户添加到sql server时,它告诉我无法找到该用户.
遵循正常的微服务框架,我们希望将每个微服务放在它自己的git repo中,然后为Service Fabric项目提供一个存储库.当我们更新其中一个微服务时,虽然Service Fabric项目将重新部署该服务.
有没有像这样拆分Service Fabric项目的例子?我在他们的所有例子中都注意到,一切都在一个解决方案/存储库中.
文章(监视和诊断Azure Service Fabric应用程序)表示以下内容(请注意粗体文本):
ASP.NET核心日志记录
选择如何检测代码可能很困难,如果你选择不好并且必须重新检测,那么你正在重新审视并可能破坏你的代码库的稳定性.为降低风险,开发人员可以选择一个检测库,例如ASP.NET Core提供的Microsoft.Extensions.Logging.这提供了一个ILogger接口,允许使用您选择的提供程序,同时最大限度地减少对现有代码的影响.另一个很好的方面是代码不仅可以在Windows和Linux上的.NET Core中使用,而且可以在完整的.NET框架中使用,从而能够跨.NET和.NET Core标准化您的仪器代码.
这应该如何工作,因为当我尝试添加扩展库(到我的服务结构集群应用程序项目,编译为.net框架4.5.2)时,它是否试图关闭所有与asp.net核心相关的二进制文件?
如何远程连接SF集群中的节点?因为这些只是虚拟机,所以我觉得我应该能够进入它们,即使这是我通常想要避免的.
我该如何进行远程操作?
只是好奇是否有人对Service Fabric中未处理的异常有经验以及围绕它们的最佳实践.主要是对服务的故障状态感到好奇.如果服务处于故障状态,服务是否会被回收?或者是否应该对未处理的异常进行全局异常处理,如果该概念甚至存在于SF中.我在搜索这个主题上找不到太多东西.
我们正在开发一个处理excel文件并吐出输出的应用程序.可用性不是一个大要求.
我们可以在晚上关闭VM设置并在早上再打开它们吗?这种设置是否适用于服务结构?如果是这样,有没有办法安排它?