c#将Web功能添加到Windows窗体项目中

时间:2016-01-14 06:27:47

标签: c# asp.net windows winforms web

我在服务器上运行一个Windows窗体应用程序,它做了很多事情。我的目的是为应用程序提供一些Web功能,例如在浏览器中查看日志文件或通过浏览器操作Settings.Defaults。

是否可以将Web功能添加到winforms应用程序中?

1 个答案:

答案 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

一样自己编写