托管在服务结构上的 ASP.Net 核心项目未启动

Posted

技术标签:

【中文标题】托管在服务结构上的 ASP.Net 核心项目未启动【英文标题】:ASP.Net core project hosting on service fabric dos not start 【发布时间】:2016-08-28 04:44:00 【问题描述】:

我们尝试在 Service Fabric 上托管一个 ASP.Net 核心 MVC RC1 DNX 项目。部署工作,但项目没有开始。根据我们的日志,服务结构似乎找不到启动类并创建实例。我们下载了一个运行良好的演示项目,但我们无法启动并运行我们的项目。我们看不到任何有用的日志信息。不在事件日志、服务结构日志流或 Visual Studio 调试提示中。我们可以做些什么来启用更多调试信息。我们的配置或项目设置可能有什么问题?这是我们项目的关键部分:

ServiceManifest.xml:

<?xml version="1.0" encoding="utf-8"?>
<ServiceManifest Name="WebPkg"
                 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>
    <StatelessServiceType ServiceTypeName="WebType" >
      <Extensions>
        <Extension Name="__GeneratedServiceType__">
          <GeneratedNames xmlns="http://schemas.microsoft.com/2015/03/fabact-no-schema">
            <DefaultService Name="WebTypeService" />
            <ServiceEndpoint Name="WebTypeEndpoint" />
          </GeneratedNames>
        </Extension>
      </Extensions>
    </StatelessServiceType>
  </ServiceTypes>

  <CodePackage Name="C" Version="1.0.0">
    <EntryPoint>
      <ExeHost>
        <Program>approot\runtimes\dnx-clr-win-x64.1.0.0-rc1-update2\bin\dnx.exe</Program>
        <Arguments>--appbase approot\src\Sportflash.Web Microsoft.Dnx.ApplicationHost Microsoft.ServiceFabric.AspNet.Hosting --server Microsoft.AspNet.Server.Kestrel</Arguments>
        <WorkingFolder>CodePackage</WorkingFolder>
        <ConsoleRedirection FileRetentionCount="5" FileMaxSizeInKb="2048" />
      </ExeHost>
    </EntryPoint>
  </CodePackage>

  <Resources>
    <Endpoints>
      <Endpoint Protocol="http" Name="WebTypeEndpoint" Type="Input" Port="5000" />
    </Endpoints>
  </Resources>
</ServiceManifest>

project.json:


  "version": "1.0.0-*",
  "compilationOptions": 
    "emitEntryPoint": true
  ,

  "dependencies": 
    "EntityFramework": "6.1.3",
    "Microsoft.AspNet.Mvc": "6.0.0-rc1-final",
    "Microsoft.AspNet.Mvc.TagHelpers": "6.0.0-rc1-final",
    "Microsoft.AspNet.Authentication.Cookies": "1.0.0-rc1-final",
    "Microsoft.AspNet.Authentication.Facebook": "1.0.0-rc1-final",
    "Microsoft.AspNet.Authentication.Google": "1.0.0-rc1-final",
    "Microsoft.AspNet.Authentication.MicrosoftAccount": "1.0.0-rc1-final",
    "Microsoft.AspNet.Authentication.Twitter": "1.0.0-rc1-final",
    "Microsoft.AspNet.Diagnostics": "1.0.0-rc1-final",
    "Microsoft.AspNet.Diagnostics.Entity": "7.0.0-rc1-final",
    "Microsoft.AspNet.IISPlatformHandler": "1.0.0-rc1-final",
    "Microsoft.AspNet.Server.Kestrel": "1.0.0-rc1-final",
    "Microsoft.AspNet.StaticFiles": "1.0.0-rc1-final",
    "Microsoft.AspNet.Tooling.Razor": "1.0.0-rc1-final",
    "Microsoft.Extensions.Configuration.Json": "1.0.0-rc1-final",
    "Microsoft.Extensions.Configuration.FileProviderExtensions": "1.0.0-rc1-final",
    "Microsoft.Extensions.Configuration.UserSecrets": "1.0.0-rc1-final",
    "Microsoft.Extensions.CodeGenerators.Mvc": "1.0.0-rc1-final",
    "Microsoft.Extensions.Logging": "1.0.0-rc1-final",
    "Microsoft.Extensions.Logging.Console": "1.0.0-rc1-final",
    "Microsoft.Extensions.Logging.Debug": "1.0.0-rc1-final",
    "Microsoft.ServiceFabric.AspNet.Hosting": "1.0.0-rc1",
    "Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.0.0-rc1-final",
    "Sportflash.Web.Core": "1.0.0-*",
    "Microsoft.ApplicationInsights.AspNet": "1.0.0-rc1",
    "angular-signalr-hub.TypeScript.DefinitelyTyped": "0.6.7",
    "Microsoft.AspNet.Http.Extensions": "1.0.0-rc1-final",
    "Microsoft.Extensions.Globalization.CultureInfoCache": "1.0.0-rc1-final",
    "Microsoft.Extensions.Localization.Abstractions": "1.0.0-rc1-final",
    "Microsoft.AspNet.Localization": "1.0.0-rc1-final",
    "Microsoft.Extensions.Localization": "1.0.0-rc1-final",    
    "jquery.TypeScript.DefinitelyTyped": "2.8.8",
    "signalr.TypeScript.DefinitelyTyped": "0.2.0",
    "Newtonsoft.Json": "8.0.3",
    "Microsoft.CodeAnalysis": "1.1.0-rc1-20151109-01"
  ,

  "userSecretsId": "aspnet5-Sportflash.Web-f067f2f7-086e-4a52-88ea-a7317d1b11e8",

  "commands": 
    "web": "Microsoft.AspNet.Server.Kestrel",
    "gen": "Microsoft.Extensions.CodeGeneration"
  ,

  "frameworks": 
    "dnx451": 
      "dependencies": 
      
    
  ,
  "exclude": [
    "wwwroot",
    "node_modules",
    "bower_components",
    "PackageRoot"
  ],
  "publishExclude": [
    "node_modules",
    "bower_components",
    "PackageRoot",    
    "**.user",
    "**.vspscc"
  ],
  "scripts": 
    "postrestore": [ "npm install", "bower install" ],
    "prepublish": [ "npm install", "bower install" ]
  

Startup.cs:

public class Startup

    public static void Main(string[] args) => WebApplication.Run<Startup>(args);

【问题讨论】:

试试看这个帖子:***.com/questions/33832635/… 如果部署好,打开Service Fabric资源管理器至少能在浏览器中看到服务吗?它不存在,那么这意味着它没有真正部署。 我可以在服务结构资源管理器中看到它。而且我还可以在您期望的位置看到服务结构文件夹中文件系统上的代码。我什至可以使用常用的 web 命令在 Service Fabric 部署它的地方启动应用程序。 【参考方案1】:

我建议在 GitHub 上探索这个示例。

此示例演示如何在无状态/有状态服务的通信侦听器中使用 ASP.NET Core。

此示例已更新为使用dotnet cli。

有 2 个不同的分支 dnxdotnetclidnx 分支可以在 Visual Studio 中使用。

【讨论】:

以上是关于托管在服务结构上的 ASP.Net 核心项目未启动的主要内容,如果未能解决你的问题,请参考以下文章

在两台物理服务器中托管 ASP.NET MVC 项目

Asp.Net 5 项目托管

如何优雅地关闭 ASP.Net(非核心)

从托管在被 CORS 策略阻止的 Asp.net 核心 Web 服务器中的 Angular 应用程序调用我的休息服务

无法在 ASP.NET vNext 中启动我的静态文件托管服务器

ASP.NET 核心 |如何使本地网络 gRPC 客户端池