C# 如何在托管服务上托管bot服务器?

C# 如何在托管服务上托管bot服务器?,c#,asp.net,C#,Asp.net,我用C#控制台应用程序制作了一个简单的bot应用程序,它通过http请求与用户交互。现在我想把它发布到主机服务上,这样它就会一直在线我想采取的步骤是将bot服务器的所有类导出到类库中,生成一个Asp.net应用程序并将其上载到主机服务(可能使用Plesk面板),然后让Asp.net生成服务器类的实例并启动它 但问题是,每次我打开浏览器并向asp.net应用程序发出请求时,它都会从线程池中为我分派一个新线程,因此每次它都会创建一个新的server类实例并启动它。那么我如何访问同一个服务器类呢? 这

我用C#控制台应用程序制作了一个简单的bot应用程序,它通过http请求与用户交互。现在我想把它发布到主机服务上,这样它就会一直在线
我想采取的步骤是将bot服务器的所有类导出到类库中,生成一个Asp.net应用程序并将其上载到主机服务(可能使用Plesk面板),然后让Asp.net生成服务器类的实例并启动它

但问题是,每次我打开浏览器并向asp.net应用程序发出请求时,它都会从线程池中为我分派一个新线程,因此每次它都会创建一个新的server类实例并启动它。那么我如何访问同一个服务器类呢?
这可能吗?
我知道我可以购买vps并在那里运行我的控制台应用程序,但这不是在为一个简单的机器人服务器应用程序浪费资源吗?
如果我的问题不太清楚,很抱歉。

您可以这样做,但这不是推荐的方式

创建一个具有getObj()的类,该类返回唯一正在运行的对象,如果没有对象,它将创建一个并返回它

见:

让对象生成一个在后台运行的线程。 让线程将其变量保存到sql server以实现冗余

第一次创建对象时。从sql server读取变量,以重新创建线程被终止前的状态


在global.asax中,您可以在应用程序重新启动时启动线程。

ASP.NET实际上不是为运行服务而设计的,它是为处理请求及其响应而设计的。您可以通过一点工作(例如,拥有一个“机器人”的静态实例)来解决其中一些问题,但这种努力最终是徒劳的——只要应用程序或池被回收,您的“服务”就会消失,对此您无能为力。您需要在请求之间保留数据。在HTTP上下文中,通常使用“会话”来实现此目的。如果您希望所有客户端(而不仅仅是来自一个客户端的所有请求)的持久化数据都相同,那么您就有一个更大的问题。因此没有好的方法在托管服务上运行这样的服务,对吗?谢谢您的回答。因此,在托管服务上运行服务不是一个好主意。你推荐什么?我应该在VPS/VDS上运行它吗?那会更好,但是如果你有更多的时间而不是金钱,你可以尝试用另一种方式。你也可以通过mono在覆盆子pi上运行它。应该很便宜。