【问题标题】:Where does ASP.NET server start code go?ASP.NET 服务器启动代码去哪了?
【发布时间】:2017-11-05 06:34:03
【问题描述】:

我使用“空”设置创建了一个新的 ASP.NET Web 应用程序项目。这意味着我没有得到任何课程,并且没有给我一个相当简单的 Web.config 文件。首次启动程序时,我需要更改哪些文件或配置设置才能运行静态类方法?

注意:我尝试添加一个带有构造函数的 Startup.cs 类,但这不起作用,我尝试添加 <appSettings> 标记和指定 owin appStartup 的子 <add> 标记,但这也不起作用。

【问题讨论】:

  • 使用“空”模板意味着您对自己正在做的事情有足够的了解,可以在没有脚手架的情况下开始。尝试使用另一个为您创建启动功能的模板。
  • 我想知道我在做什么。我不想要模板,因为我最多只有一个可用的 WebSocket 服务器,但我希望在有人第一次点击 websocket 端点之前运行一些逻辑。
  • 如果您知道我需要做什么,我将非常感谢您的回答。
  • 我建议基于其他模板之一创建一个项目,以便您分析如何将其组合在一起。
  • 看起来我正在寻找真正创建 WCF 服务。

标签: c# asp.net


【解决方案1】:

一切都从 global.asax 开始。 IIS 管道编译 global.asax,它通常引用从 HttpApplication 继承的 global.asax.cs。然后应用程序由管道实例化,并在管道事件发生时调用其事件处理程序。设置一切的事情是该应用程序的构造和 Application_Start 事件,您可以在其中组成对象图、注册包和路由等。

当然还有更多内容,但如果您想尝试自己重建一个工作站点,这就是一切的开始。

【讨论】:

  • Global.asax Application_Start 仅在发出第一个请求后运行。我想在服务器启动后立即运行一些东西,这样我就可以创建一些共享内存结构,这些结构可以在所有不同的请求之间访问,并且可能在发出任何请求之前进行初始化。
  • 您可以使用应用程序预热或启动提供程序。见this question
  • 谢谢!这就是我要找的!虽然看到了所有涉及的步骤,但我可能会选择 OWIN 并完全避免使用 IIS。
【解决方案2】:

一个非常简单的方法是使用 ASP.NET Core 自托管,无需学习复杂的 IIS 配置。

首先,安装.NET Core:https://www.microsoft.com/net/learn/get-started/windows

其次,不要按照他们的步骤创建新的控制台应用程序,而是按照以下命令行说明进行操作:

  1. 为您的项目创建一个目录mkdir MyProject
  2. 进入该目录cd MyProject
  3. 创建一个空白的 ASP.NET 核心应用程序dotnet new web
  4. 运行它dotnet run

这将创建并运行一个新的空白 ASP.NET Web 应用程序,您可以通过 http://localhost:5000 访问它

将生成两个类:Program.csStartup.csStartup.cs 将包含处理请求和提供响应的逻辑,而Program.cs 将包含 MainBuildWebHost 方法。

服务器启动代码进入静态Main 方法,允许您在网络服务器初始化之前初始化任何您可能想要的东西。

使用 .NET Core 的另一个好处是,您不仅可以在 Windows 上运行它,还可以在所有 *nix 系统(Linux、MacOSX)上运行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-30
    • 1970-01-01
    • 1970-01-01
    • 2013-10-04
    • 2013-10-10
    • 2018-07-22
    相关资源
    最近更新 更多