ASP.NET WebApi自宿主模式


咱們在使用ASP.NET WebApi的時候一般習慣創建一個Web應用程序,最終程序將發布到IIS進行運行,近期公司有個需求需要在Windows服務中使用WebApi進行http監聽響應,於是搜索了部分資料后整理如下,這里演示使用控制台應用程序。首先需要從Nuget引用相關類庫:

<packages>
  <package id="Microsoft.AspNet.WebApi.Client" version="4.0.20710.0" targetFramework="net40" />
  <package id="Microsoft.AspNet.WebApi.Core" version="4.0.20710.0" targetFramework="net40" />
  <package id="Microsoft.AspNet.WebApi.SelfHost" version="4.0.30506.0" targetFramework="net40" />
  <package id="Microsoft.Net.Http" version="2.0.20710.0" targetFramework="net40" />
  <package id="Newtonsoft.Json" version="4.5.6" targetFramework="net40" />
</packages>

注意我使用的是.net framework 4.0,所以Microsoft.AspNet.WebApi.SelfHost的版本是4.x。

然后就是C#代碼如下:

class Program
{
    static void Main(string[] args)
    {
        var config = new HttpSelfHostConfiguration("http://localhost:9100");
        config.Routes.MapHttpRoute(
            "API Default", "api/{controller}/{id}",
            new { id = RouteParameter.Optional, namespaceName = "BDCDataAR.HeNanOneWinAccept.API" });
        config.Routes.MapHttpRoute(
            "API action", "api/{controller}/{action}/{id}",
            new { id = RouteParameter.Optional, namespaceName = "BDCDataAR.HeNanOneWinAccept.API" });
        var server = new HttpSelfHostServer(config);
        server.OpenAsync().Wait();
        Console.WriteLine("http監聽成功");
        Console.ReadKey();
    }
}

然后我們創建一個Api控制器如下:

public class StudentController : ApiController
{
    [HttpGet]
    public string Get()
    {
        return "hello world";
    }

    [HttpPost]
    public string Add(StudentPara para)
    {
        return "success";
    }
}

public class StudentPara
{
    public string EncryptData { get; set; }
}

當我們通過瀏覽器請求http://localhost:9100/api/Student的時候,將返回hello world。

注意:Add方法是post請求,默認接收數據的最大長度為65536字節數,超過這個字節數將報413錯誤,為了解決該問題,需要對config進行設置,設置如下:

config.MaxReceivedMessageSize = 1024 * 1024;//表示1M


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM