顯示具有 C# 標籤的文章。 顯示所有文章
顯示具有 C# 標籤的文章。 顯示所有文章

2017年1月2日 星期一

ASP.NET Web API

本文將建立一個基本的Web API,使用Postman做Demo

Overview

此文章將會建立一個Web API

創建專案

1. File->New->Project…

2. Create ASP.NET Web Application
3. 選擇Empty,勾選Web API
4. Controller資料夾按右鍵->Add->New Item…,新增Web API Controller Class,檔名是ValuesController.cs
點開ValuesController.cs可以看到已經幫我們寫要Web API的框架了,我們現在來看一下路由的設置

可以看到routeTemplate被設置為
"api/{controller}/{id}"
{controller}:要呼叫的controller name(此例子即為Values)
{id}:參數資料

建置專案

按下F5啟動偵錯
會跑出HTTP Error 403.14 - Forbidden的錯誤是因為我們沒有建立頁面,可是Web API的功能還是正常的,現在開啟PostmanHTTP動詞是GET,在URL上輸入http://localhost:{Port Number}/api/values,按下Send

我們可以看由Get Action所傳回來的陣列
如果改為http://localhost:{Port Number}/api/values/5會因為路由機制會導至第一個符合條件,所以會由有id參數的Get所處理
就會看到單一的value

總結

這次已經完成一個簡單的Web API,透過強大的Visual Studio的模板功能,沒有動到程式碼就可以完成一個Web API的框架

參考連結

2014年7月7日 星期一

在.NET應用程式中安裝RxNorm API

目的

由於要做藥物名統一的工作,中間需要用到RxNorm的API,現在把RxNorm API的安裝方式做一個整理。

環境

  • Visual Studio Express 2012
  • C#

步驟

1. 創立應用程式

新增一個新的C#專案,把[應用程式路徑]記起來。
[應用程式路徑]=C:\Users\Hsin_Ping\Documents\Visual Studio 2012\Projects\InstallRxNormAPI\InstallRxNormAPI

2. 記住[wsdl路徑]

在電腦中找出[wsdl路徑]記起來。
[wsdl路徑]=C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools

3. cmd

打開命令提示字元,輸入下列指令:

完成之後應該會得到以下訊息代表正確:

4. 在應用程式新增DBManagerService.cs

在應用程式按[右鍵]>[加入]>[現有項目]新增DBManagerService.cs。

5. 加入System.Web.Services參考

在應用程式按[右鍵]>[加入參考]新增System.Web.Services。

參考

2014年6月26日 星期四

自動登入apple developer

在工作的時候遇到了需要讓電腦自動登入apple developer的需求,想到的解決方法就是用HttpWebRequest去做網頁的溝通,進而得到cookies,達到登入的目的。

目的

利用HttpWebRequest進入apple developer,取得登入所需的cookies。

方法

我們要模仿網頁的互動就要先去觀察網頁的傳遞方式,所以第一步我們要做的觀察,我們知道網頁的運作方式之後就可以將開始寫程式了,利用HttpWebRequest來模仿browser中我們所做的動作,達到登入的目的。

步驟

1. 觀察網頁運作

這裡我們利用chrome的developer tools(在chrome上按下F12即可使用),我們在觀察方面有2個部分要注意的:

1. 傳送帳號密碼的真正網址

網頁的設計常常會再登入中間安插一個專門處理的網頁,如果網頁是這樣設計的話那我們表面上看到的那個uri就不是真正在做登入的頁面了,為了避免這樣的情況,我們可以利用developer tools來找到真正做處理的uri。
在這裡我們可以看到Post的網頁其實是action中的uri,而非原本的uri

2. headers

接下來我們就要去看看網頁的標頭檔是什麼樣子的,由developer tools我們可以看到網頁的標頭檔。
紅色框框部分為要注意的部分

2. 撰寫程式碼

先處理第一點的第一個部分,我們要先抓出真正的uri,在這裡我們使用的是Html Agility Pack,這個package可以利用元素的XPath找出那個元素的屬性,要找出元素的XPath也很容易,只要使用developer tools就可以了。
元素>按右鍵>Copy XPath
找出XPath後我們才算是真正開始寫程式碼,我們可以把程式分成兩個部分:
  1. 找出真正處理的uri
  2. 撰寫正確的request取回登入資訊的cookies
再來是程式碼的部分


結論

其實要自動登入很簡單,只要熟悉http的運作就可以很容易的做出,在這個部份我覺得最重要的就是google developer tools要熟練。

2014年4月2日 星期三

Hello SignalR

這次要介紹的是ASP.NET SignalR library,它可以讓我們很簡單的寫出Real-time的網頁程式,原本要使用web socket在那寫的老半天,又要考慮到跨平台所帶來的影響,而使用了SignalR就不需要再考慮這些了,因為它都可以幫你處理,詳細的原理可以參考【SignalR 再次超越你對 Web 的想像 - 建立即時互動的 Web】這篇,在這篇裡我會demo一個簡單的即時通訊網頁。

平台

  • .NET Framework 4.5
  • C#
  • SignalR 2.0
  • Visual Studio 2012
  • Windows 8

實作(借用Tutorial: Getting Started with SignalR 2.0的例子)

Step 1

開啟WebSocket通訊協定

控制台>程式集>程式和功能>開啟或關閉Windows功能>Internet Information Service>World Wide Web功能>應用程式開發功能>勾選【WebSocket通訊協定】

Step 2

新增ASP.NET空白Web應用程式

選取【.NET Framework 4.5】>選取【ASP.Net空白Web應用程式】>按下【確定】

Step 3

安裝SignelR

開啟【套件管理器主控台】>鍵入【install-package Microsoft.AspNet.SignalR】>按【Enter】

Step 4

建立SignalR Hub 類別

方案總管中在方案上按【滑鼠右鍵】>【加入】>【新增項目】>【SignalR Hub 類別】>【新增】

在這個類別中我們可以撰寫signalR要做的函式,先把下面的code覆蓋初始的code : 

這裡不是很懂吧,沒關係,之後的說明會詳細解說。

Step 5

建立OWIN Startup類別

建立一個類別,將下列程式碼貼上 : 

OWIN為Open Web Interface for .NET的簡稱,簡單的來說就是可以把原本預設的server做變更,像是.NET通常都是使用IIS,使用了OWIN我們就可以任意的決定我們的server side要給誰處理,在SignalR中我們就要把後端交給SignalR Hub運作。

Step 6

建立.html及.js

Chat.html :
main.js :

注意 : Chat.html中script的載入順序一定要先jQuery再SignalR再<script src="signalr/hubs"></script>,signalr/hubs這個資料夾只有再run time的時候才會動態產生,它是SignalR用在jQuery及server端溝通上的管理。

Step 7

將Chat.html設為起始頁

Chat.html按【右鍵】>【設定為起始頁】

Demo

輸入名字
開啟多個Chat.html
開始聊天嘍

程式運作說明

利用chat.server.send(name, message);去叫ChatHub中的send method,然後ChatHub會用Clients.All.broadcastMessage(name, message);去叫用client中的broadcastMessage將資訊傳給client

參考資料

SignalR 再次超越你對 Web 的想像 - 建立即時互動的 Web