我在服务器上运行一个Windows窗体应用程序,它做了很多事情。我的目的是为应用程序提供一些Web功能,例如在浏览器中查看日志文件或通过浏览器操作Settings.Defaults。
是否可以将Web功能添加到winforms应用程序中?
答案 0 :(得分:1)
是的,您可以通过将自己的网络API自托管到您的Windows窗体应用程序中,例如演示here
第二个选项是使用ASP.NET 5 self-hosting,但它仍然处于测试阶段且尚未提供良好的文档。
编辑1: 要支持使用Web API 2查看页面,您需要执行以下步骤: 首先,让JSON格式化程序处理HTML请求,如下所示
config.Routes.MapHttpRoute(
"API Default", "api/{controller}/{id}",
new { id = RouteParameter.Optional });
// Add the supported media type.
config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/html"));
其次,将所需的html模板文件保存在磁盘上,占位符将在运行时替换为实际数据并更改控制器,如下所示
public String GetAllProducts()
{
//Should be loaded from HTML template file ex. Products.html
string html = "<html><body><table border=\"2\"><tr><th>ID</th><th>Name</th><th>Category</th><th>Price</th><tr>{{placeholder}}</table></body></html>";
StringBuilder sb = new StringBuilder();
foreach (var item in products)
{
sb.AppendLine("<tr><td>" + item.Id + "</td><td>" + item.Name + "</td><td>" + item.Category + "</td><td>" + item.Price + "</td></tr>");
}
return html.Replace("{{placeholder}}", sb.ToString());
}
注意:如果您不喜欢默认的JSON格式化程序,您可以像编写this project
一样自己编写