我正在尝试构建一个在 Windows 服务中自托管的 Web 服务 API。我从创建新 Web API 项目时 Visual Studio 2019 创建的模板代码开始,并删除了所有页面内容,因为我的服务中不会显示实际页面。我能找到的我的项目和剥离模板项目之间的唯一区别是,我的项目以 main() 开头,而模板以 Global.asax 代码开头。最后,我会将 main() 中的代码替换为启动 Windows 服务的代码,但现在,我只想在 IDE 调试器中运行它。
private static void Main()
{
try
{
var config = new HttpSelfHostConfiguration("http://localhost:8080");
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
using (var server = new HttpSelfHostServer(config))
{
var serverTask = server.OpenAsync();
serverTask.Wait();
}
}
catch (Exception e)
{
UtilityFunctions.MessageLog(e.Message, 2, e);
}
}
我使用的是在 Visual Studio 2019 创建新的 Web API 项目时创建的 ValuesController.cs,在我的模板项目中,它可以工作。该页面丢失,因为我删除了它,但我可以在浏览器中输入 api 路径并从正在运行的 Web 服务中获取结果。使用我的代码,它只是开始和停止。 serverTask.Wait() 立即结束。我不明白我做错了什么。我还尝试在管理员权限下运行 Visual Studio 2019,结果没有变化。