Service Fabric中的.NET Core RC2

Joh*_*man 7 asp.net azure-service-fabric asp.net-core

我想将一个新的.NET Core RC2 MVC应用程序添加到现有的Service Fabric集群中,但我无法弄清楚我应该如何做到这一点.

我看了几个RC1的例子,但这也没有让我更进一步.我知道您需要在ServiceManifest.xml文件中添加EntryPoint.但是在RC1示例中,它们指向已在RC2中删除的dnx.exe:

<EntryPoint>
     <ExeHost>
        <Program>approot\runtimes\dnx-clr-win-x64.1.0.0-rc1-update1\bin\dnx.exe</Program>
        <Arguments>--appbase approot\src\ChatWeb Microsoft.Dnx.ApplicationHost Microsoft.ServiceFabric.AspNet.Hosting --server Microsoft.AspNet.Server.WebListener</Arguments>
        <WorkingFolder>CodePackage</WorkingFolder>
        <ConsoleRedirection FileRetentionCount="5" FileMaxSizeInKb="2048" />
     </ExeHost>
  </EntryPoint>
Run Code Online (Sandbox Code Playgroud)

我应该在RC2版本的.NET Core中使用哪个EntryPoint?

谢谢!

Adm*_*vić 5

看看这个公告:

宣布ASP.NET Core RC2

如您所见,带有RC2的ASP.NET Core应用程序成为控制台应用程序.

也就是说,您的入口点是您的ASP.NET核心控制台应用程序编译出来的EXE.

因此,依靠DNX从Startup.cs中获取Main方法,您可以在Program.cs中设置工具链,然后构建一个Service Fabric将用于Entry的EXE.

public class Program
{
    public static void Main(string[] args)
    {
        var host = new WebHostBuilder()
        .UseKestrel()
        .UseStartup<Startup>()
        .Build();
        host.Run();
    }
}
Run Code Online (Sandbox Code Playgroud)

所以你的清单会是这样的:

<EntryPoint>
     <ExeHost>
        <Program>YourApp.Exe</Program>
     </ExeHost>
 </EntryPoint>
Run Code Online (Sandbox Code Playgroud)

  • @johandroid您的项目必须是控制台应用程序.从头开始创建新的Service Fabric项目,然后选择Stateless Web API.创建它后,请注意它显示它是C#控制台应用程序.如果你构建它,你将在bin文件夹中获得EXE.如果打开PackageRoot\ServiceManifest.xml,您会注意到EXE设置为EntryPoint.由于ASP.NET Core RC2是基于OWIN和WebAPI 2构建的,因此您需要设置相同的项目结构.请记住,Service Fabric中没有IIS - Web App必须是自托管的,这是在Main方法中设置的. (2认同)