主題

[ASP.NET C#] Web API開發問題

阿宅 | 2021-04-13 14:16:13 | 巴幣 0 | 人氣 112

第一次開發Web API部分,遇到不少問題紀錄一下

連接網址部分:http://ip:port/{controller}/{action}/{id}={id}
config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "{controller}/{action}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );
{controller}=控制器名稱
{action}=方法名稱
{id}=參數名稱

Post Get設定及參數取得
[HttpPost, HttpGet]//方法前加入這行指定
public string Test()

Get 可以直接宣告參數來取得參數值
public string Test(int a, int b, int c)

Post 參考了很多方式來取值都不是很正確,後來查到使用HttpRequestMessage直接帶入
public string Test(HttpRequestMessage request)
Post會因ContentType不同解析不同,所以需要去判斷request.Content.Headers.ContentType.MediaType
application/x-www-form-urlencoded 使用
var form= request.Content.ReadAsFormDataAsync().Result;
application/json 使用
var json = request.Content.ReadAsStringAsync().Result;
用這些方法取得變數值再進行序列化

取得Client的IP位址
string clientAddress = System.Web.HttpContext.Current.Request.UserHostAddress;

因為需要寫Log,單機測試的時候都沒有問題,但架在Server的IIS上後,無法取得修改權限
後來查了很久才查到,需要去新增Log資料夾的IIS_USRS權限
資料夾 > 安全性 > 編輯 > 新增 > 進階 > 立即尋找 > IIS_USRS加入並打開他的寫入權限
小小抱怨我第一次查到教我加入NETWORK SERVICE,但是根本沒用害我又找很久權限

另外架上IIS後要看到錯誤訊息可以先在Web.config加上
  <system.web>
    <customErrors mode="Off"/>
  </system.web>
這樣就可以在Postman或是你程式回傳中看到錯誤訊息了

大概目前遇到的問題是這樣,有遇到其他再補充上來,希望可以幫助到剛好有一樣問題的人

創作回應

相關創作

更多創作