【问题标题】:Writing a Web Server for ASP.Net in C#.net [closed]在 C#.net 中为 ASP.Net 编写 Web 服务器 [关闭]
【发布时间】:2013-12-19 02:25:35
【问题描述】:

我需要一个能够托管 ASP.Net 页面的 C# (v3.5) Web 服务器。它应该支持所有 ASP.net 功能,主要是请求线程。出于某种原因,我不想使用 IIS。

感谢任何帮助。

-甘尼什

【问题讨论】:

  • 出于某种原因我不想使用 IIS。 - 也许你可以分享原因。
  • 询问代码的问题对于 SO 来说是无关紧要的。询问工具或链接的问题也是如此。请使用您尝试过的代码以及失败的原因更新问题。

标签: c# asp.net webserver


【解决方案1】:

幸运的是,有一些可用的选项。如果您的目标只是控制流程以便您可以提供自己的 UI 或将其嵌入到其他应用程序中,那么使用 IIS 可托管 Web 核心可能是一个不错的选择(请参阅:self hosting asp.net mvc)。

不过,Microsoft 也发布了一个名为“OWIN”(Open Web Interface for .NET)的规范,它定义了 ASP.NET 中各种组件所期望的接口。请参阅OWIN project page 了解一些您可能会觉得有用的实现。

这似乎与您的要求最相关:https://github.com/Bobris/Nowin。来自 GitHub README 的描述:

纯 .Net 4.5 中的快速且可扩展的 Owin Web 服务器(它不使用 HttpListener)

当前状态可用于测试,不能用于生产,没有人这样做 任何安全审查,您已被警告。在 Windows 上速度更好 比 NodeJs,在某些情况下甚至比 HttpListener 更好。

它支持的功能:

  • Http 1.0 和 1.1 客户端以 yostrong textu 可以在 Internet 上找到的最佳方式使用 SocketAsyncEventArgs
  • KeepAlive、未经测试的流水线、请求和响应的自动分块编码/解码
  • 使用所有可用内核自动进行严格异步和并行处理
  • SSL 使用 .Net SSLstrong 文本流,所以理论上它应该是同样安全的
  • 独立于平台的WebSockets!它缓冲数据,因此 SignalR 是 在线上比 Win8 上的当前 HttpListener 更优化。
  • 跟踪当前连接数和最大分配连接数和 根据需要分配新的
  • 一个连接需要少于 20kb 的 RAM,其中大部分被重复使用但从未被释放。
  • 默认设置 请求和响应标头的最大大小为 8KB。
  • 发表于 Nuget 易于使用。没有依赖关系。其他 Owin .Net 服务器示例 也包括在内。修改了这些示例源代码的某些部分 来自 Katana 项目。

【讨论】:

    【解决方案2】:

    是的,您可以在没有 IIS 的情况下托管 asp.net 应用程序。为此,您需要一个 HTTP 服务器。 WebAPI 具有自托管功能,您实际上可以将其托管在控制台应用程序等简单的东西中。我们可以拥有 ASP.NET Web API 服务,而不必担心 ASP.NET 和 IIS。对于使用 WebAPI 进行托管,您需要对代码进行一些更改。这里只是通过链接演示如何在没有 iss 的情况下进行托管。 Hosting Application without IIS

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-16
      • 2011-05-29
      • 1970-01-01
      • 2010-09-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-14
      相关资源
      最近更新 更多