7

我创建了一个带有普通无状态服务和无状态 ASP.NET Core Web 应用程序的 Service Fabric 应用程序。在不更改任何默认代码的情况下,我尝试部署应用程序。在部署过程中发生错误:

Register-ServiceFabricApplicationType :
C:\SfDevCluster\Data\ImageBuilderProxy\AppType\AadMockApplicationType 中应用程序的 BuildLayout 无效。服务
TenantWebServerPkg 缺少代码。

检查我的包后,我注意到包不包含代码,而只包含服务清单文件和配置包:

在此处输入图像描述

我的 Web 应用程序服务清单:

<?xml version="1.0" encoding="utf-8"?>
<ServiceManifest Name="TenantWebServerPkg"
                 Version="1.0.0"
                 xmlns="http://schemas.microsoft.com/2011/01/fabric"
                 xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <ServiceTypes>
    <!-- This is the name of your ServiceType. 
         This name must match the string used in RegisterServiceType call in Program.cs. -->
    <StatelessServiceType ServiceTypeName="TenantWebServerType" />
  </ServiceTypes>

  <!-- Code package is your service executable. -->
  <CodePackage Name="Code" Version="1.0.0">
    <EntryPoint>
      <ExeHost>
        <Program>TenantWebServer.exe</Program>
        <WorkingFolder>CodePackage</WorkingFolder>
      </ExeHost>
    </EntryPoint>
  </CodePackage>

  <!-- Config package is the contents of the Config directoy under PackageRoot that contains an 
       independently-updateable and versioned set of custom configuration settings for your service. -->
  <ConfigPackage Name="Config" Version="1.0.0" />

  <Resources>
    <Endpoints>
      <!-- This endpoint is used by the communication listener to obtain the port on which to 
           listen. Please note that if your service is partitioned, this port is shared with 
           replicas of different partitions that are placed in your code. -->
      <Endpoint Protocol="http" Name="ServiceEndpoint" Type="Input" Port="8396" />
    </Endpoints>
  </Resources>
</ServiceManifest>

尝试了几个小时后,我注意到代码包已发布到不同的文件夹:C:\Users\username\AppData\Local\Temp\PublishTemp\TenantWebServer118

如何正确打包 Web 应用程序以便包含代码包?

4

1 回答 1

2

注意: Visual Studio 2015 的 .NET Core 工具不再更新,但如果您仍在使用 Visual Studio 2015,则需要安装.NET Core VS 2015 Tooling Preview 2

Microsoft 文档中所述:

要开发 ASP.NET Core Service Fabric 应用程序,您应该安装以下工作负载:

  • Azure 开发(在Web & Cloud下)
  • ASP.NET 和 Web 开发(在Web & Cloud下)
  • .NET Core 跨平台开发(在Other Toolsets下)

更新:

问题:为什么将代码包发布到不同的文件夹?

答案: 示例(Powershell)注册一个应用程序类型

PS C:\> Copy-ServiceFabricApplicationPackage -ApplicationPackagePath "c:\work\PersistentToDoListService" -ImageStoreConnectionString "file:C:\SfDevCluster\Data\ImageStoreShare" -ApplicationPackagePathInImageStore "PersistentToDoListService"
PS C:\> Register-ServiceFabricApplicationType -ApplicationPathInImageStore "PersistentToDoListService"

Copy-ServiceFabricApplicationPackage将在“c:\work\PersistentToDoListService”文件夹中找到的应用程序包复制到映像存储。该包被复制到图像存储中的相对路径“PersistentToDoListService”

Register-ServiceFabricApplicationType命令注册在相对路径"PersistentToDoListService"中找到的应用程序类型。

于 2018-01-25T17:50:14.823 回答