簡單記下 WebAPI 在工作中的使用


最近公司在上線CRM系統,用戶方希望在客戶現場掃描二維碼等信息可以獲取對應的生產信息,CRM顧問方團隊希望MES小組這邊提供接口返回數據給他們。經過討論后,采用WebApi的提供數據接口,為此,我准備搭建一個項目平台。

補充:之前在CSDN上傳的源碼有不足之處,傳參違背了WEBAPI設計初衷,在webAPI中route規則修改為  [Route("api/GetProduct02/{boxNO}")],調用的時候之前采用了WebForm格式的?形式后接參數,這里可以改成直接為/參數內容。eg:Uri _address = new Uri(_baseAddress, "/api/GetProduct02/" + boxno);

step1:

使用visual studio 2013 創建一個空的WebAPI

點擊確定,完成項目新建向導。

Step 2

WebApiConfig 里面添加如下代碼,

public static void Register(HttpConfiguration config)
        {
            // Web API 配置和服務
            var json = config.Formatters.JsonFormatter;
            // 解決json序列化時的循環引用問題
            json.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore;
            // 移除XML序列化器,剩下Json
            config.Formatters.Remove(config.Formatters.XmlFormatter);

            var jsonFormatter = config.Formatters.OfType<System.Net.Http.Formatting.JsonMediaTypeFormatter>().First();
            jsonFormatter.SerializerSettings.ContractResolver = new Newtonsoft.Json.Serialization.CamelCasePropertyNamesContractResolver();
            // Web API 路由
            config.MapHttpAttributeRoutes();

            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{action}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );
        }

 

與Oracle數據庫連接采用System.Data.OracleClient,由於該DLL不支持.net framwork 4.5 ,所以我在該解決方案下,增加了一個項目解決方案,采用.net framwork 4.0,

並在webapi主項目中引用該項目。代碼http://download.csdn.net/download/gudaozi712m/10231426

step 3 發布項目

選擇自定義,輸入自定義名稱

 選擇文件系統

 目標位置即為項目發布后的文件位置,

 

 

 step 4 部署到IIS

 選擇網站->添加網站,如下,輸入相應的信息。

下面這一步非常重要

使用SOAPUI測試部署的程序,調用方法,彈出如下報錯

解決辦法是:

 

 

 

再重新啟動網站,使用SOAPUI成功調用,

 附 調用時可能會報的錯誤及解決辦法

一、

解決辦法:

二、這個錯誤出現的很偶然,折騰了一會,網上很多人都沒說到點子上,這個是因為本機電腦裝了oracle server端,而我又額外的裝了客戶端,導致出現ORA-12557錯誤,j

解決辦法是:檢查環境變量path,將屬於client的目錄移除。

三、

 

解決辦法:

 


免責聲明!

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



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