【问题标题】:Requesting information from running C# server with ASP.NET MVC3 controller使用 ASP.NET MVC3 控制器从运行 C# 服务器请求信息
【发布时间】:2025-11-25 08:40:01
【问题描述】:

我有一个具有以下属性的应用程序:

  • 客户端在网络上有一台机器,其中包含一段 C# 代码,该代码收集有关它正在运行的机器的详细信息,并定期将这些详细信息发送到我用 C# 编写的小型服务器
  • 然后通过查看服务器命令行向某人显示客户端的详细信息
  • 一次可以有多个客户端

我希望此应用程序不向服务器命令行显示详细信息,而是将它们显示在 ASP.NET MVC 3 页面上。

我正在考虑 a) 在客户端中让它使用新的详细信息远程更新数据库并一起切断服务器(但是这可能会导致大量的开销,因为有多个客户端同时运行) ,然后让 ASP.NET 应用程序查询数据库或 b) 在服务器中创建一个新方法,该方法一旦调用,将返回当前连接的客户端列表及其最后提交的详细信息,然后让我在 ASP.NET 中的控制器调用这个方法并显示详细信息?

想法?有什么建议吗?

【问题讨论】:

  • 看起来像 MVC 和实体框架。公开一个 Web API(客户端推送到)和一个网页(显示 API 收集的内容)。

标签: c# asp.net asp.net-mvc asp.net-mvc-3


【解决方案1】:

我建议尽可能多地使用 MS 堆栈为您提供的东西(IIS 而不是您自己的服务器)并使其尽可能简单(例如,尽量不要编写自己的服务器)。

选项 A 的变体将是我认为的最佳选择。但是,与其让客户端直接将其保存到您的数据库中,不如让他们将其发送到您的 Web API 作为一种手段,以便拥有一些可以验证内容或在需要时更改数据的层。

同样的 Web API 将能够将数据返回到已存储在您的数据库中的其他客户端。

尝试本教程以帮助您入门: http://www.asp.net/web-api/overview/getting-started-with-aspnet-web-api/tutorial-your-first-web-api

【讨论】:

    【解决方案2】:

    这与我稍后将为我的 MVC 应用程序编写的内容不同,它将在请求控制器操作(网页)时呈现数据,例如所有用户和当前用户的访问次数,但正如 Kay状态,我会查看 IIS 以收集此信息,尽管您可能能够合并一个 ApiController,它只从客户端机器收集数据 (JSON),类似于事件侦听器。如果不确切知道您从客户端计算机请求的原因和数据,就很难引导您朝着正确的方向前进。使用 ASP.NET WebAPI 创建一个 Restful Web 服务可能是最佳选择,因为您还可以根据 AD 中的用户组(即:高级用户)对请求进行身份验证。例如,您的 Web.config 文件将包含

    <authentication mode="Windows"/>
        <authorization>
           <allow roles = "PowerUsers"/>
           <allow roles = "Administrators"/>
           <deny users="*" />
        </authorization>
    ....
    

    这只是一个开始,我将在我自己的项目中添加内容。如果你得到任何地方请回答你自己的?因为你激发了我的好奇心,我喜欢猫。

    【讨论】:

      最近更新 更多