Thursday, November 27, 2008

web service 使用Session

web service中使用session需要開啟EnableSession
[WebMethod(EnableSession = true, CacheDuration=0....)]

web.config中<sessionState mode="">  mode不等於none

 

.NET中session的方式是透過Cookie儲存ID,才可以延續使用。
如果是在Web service中使用session,會來存取web service就不一定是瀏覽器
可能是程式碼。

如果是程式碼的話,則需要在程式碼中使用CookieContainer

WebService ws = new WebService();
System.Net.CookieContainer container = new System.Net.CookieContainer();

ws.CookieContainer = container ;
ws.XXXX();

CookieContainer 中會保存server端傳回來的sessionId,所以就可以延續的使用。

如果有需要的話,也是可以把CookieContainer存起來,再傳到需要使用的網頁或其他程式碼。

Friday, November 14, 2008

IIS 7安裝.net3

1. 若IIS在.net之後才安裝的話,跟2.0的aspnet_regiis.exe -i 不一樣

"%WINDIR%\Microsoft.Net\Framework\v3.0\Windows Communication Foundation\ServiceModelReg.exe" -r

可以在IIS的處理對應常式中看到.svc有正確的對應指令aspnet_isapi.dll,
若還是無對應的話(我是有遇到還是沒有對應),參考MSDN的設定

驗證 svc 檔案類型已在 IIS 7.0 中正確對應

1.

開啟命令提示視窗,並輸入 start inetmgr,以開啟網際網路資訊服務 (IIS) MMC 嵌入式管理單元。
2.

在左窗格中,展開具有該電腦名稱的節點,然後展開 [網站] 節點,再選取 [預設的網站]。
3.

按兩下 [功能檢視] 中的 [處理常式對應]。
4.

使用應用程式對應清單,驗證 .svc 檔案已對應至 aspnet_isapi.dll。如果該檔案並未正確對應:
1. 按一下 [新增 Managed 處理常式]。
2. 在 [要求路徑:] 中輸入 *.svc。
3. 在 [類型] 文字方塊中輸入 System.ServiceModel.Activation.HttpHandler, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089。
4. 在 [名稱:] 文字方塊中輸入 svc-Integrated。
5. 按一下 [確定]。
6. 按一下 [新增指令碼對應]。
7. 在 [要求路徑:] 中輸入 *.svc。
8. 在 [可執行檔:] 文字方塊中輸入 %SystemRoot%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll。
9. 在 [名稱:] 文字方塊中輸入 svc-ISAPI-2.0。
10. 使用上移/下移控制項,確保清單中 Managed 處理常式 (svc-Integrated) 的位置出現在 aspnet_isapi (svc-ISAPI-2.0) 處理常式之前。
11. 按一下 [確定]。



2.  預設網站->.net編譯->預設語言   改為 c#

不指定也可以,可在web.config中指定



 



總算讓WCF的.svc在IIS上部屬完成了

Monday, November 10, 2008

https的建立

 

    建立提供CA的伺服器,我在自己的windows 2003上面建立,XP pro, vista utimate都不支援參考

    (http://blog.blueshop.com.tw/topcat/archive/2007/04/03/50380.aspx)安裝憑證授權單位(CA)

      1. 因為不想花錢或是只在內部使用的Web 站台,想要使用SSL的功能,就必須自己成為憑證授權單位,自己發憑證給自己的網站使用

      2. 電腦名稱與CA有很大的關連,建議先將電腦名稱更改為叫有意義的名字

      3. 先想好要IIS中的哪一個站台成為SSL的站台

      4. 安裝CA的步驟:控制台/新增或移除程式/新增移除Windows元件/Certificate Services

      5. 安裝完畢後會在IIS的預設的網站中建立CertSrv,CertControl,CertEnroll等三個虛擬目錄

        產生憑證要求

        在要安裝ssl憑證的http server上面(這邊我是在IIS 7上面產生)

        1. 在伺服器的功能檢視中,選擇'伺服器憑證'->'建立憑證要求'
        2. '一般'填入安裝完CA的電腦名稱
          (輸入「一般名稱」,此名稱十分重要,預設為NetBios的電腦名稱(IntraNet上使用),但若使用在 InterNet上,則必須改用網站的FQDN名稱(例如:dcicc.ncit.edu.tw)。 //若網站名稱與憑證名稱不同,則使用者在瀏覽時會出現「安全性憑證的名稱不正確或與網站的名稱不相符」的安全性警告 )
        3. 密碼編譯者, 長度,我以預設值設定
        4. 選擇憑證要求的檔案名稱'D:\SSLCertification\17-0940666-02.txt'
         
        送出憑證要求
        在需要申請憑證的電腦上面
          1. 將上一個步驟所產生的檔案'D:\SSLCertification\17-0940666-02.txt',其內容複製到剪貼簿

          2. 開啟瀏覽器,鍵入「'http://17-0940666-02/certsrv/Default.asp'」 //17-0940666-02為CA的電腦名稱,若為本機也可設定為127.0.0.1

          3. 按一下「要求憑證」。

          4. 按一下「提交進階憑證要求」。

          5. 按一下「用 Base-64 編碼的 CMC 或 PKCS #10 檔案來提交憑證要求,或用 Base-64 編碼的 PKCS #7 檔案提交更新要求」。

          6. 在已儲存的要求下方的文字方塊中,按下Ctrl+V,貼上之前複製的內容,按一下「提交」。

           

          發行憑證

          回到安裝憑證單位的主機上面

            1. 控制台/系統管理工具/憑證授權單位

            2. 展開後點選「擱置要求」資料夾

            3. 點選剛剛提交的憑證要求

            4. 點選功能表上的「執行/所有工作/發行」

            5. 點選「發出的憑證」資料夾

            6. 對剛剛發出的憑證按2下滑鼠以檢視之

            7. 按下「詳細資料」的索引標籤,按一下「複製到檔案」

            8. 按下一步,點選匯出的檔案格式為「Base-64 Encoded X.509 (.CER)」

            9. 輸入欲產生的憑證檔案名稱,例如:C:\dcicc.cer

            10. 下一步/完成/確定。

             

            在Web Server上安裝憑證

            在需要架設https的主機上,打開IIS 7 管理員

            1. 在伺服器的功能檢視中,選擇'伺服器憑證'->'完成憑證要求'

            2. 設定好'憑證授權的檔案'的路徑與名稱,好記的名稱設定好, 把在CA上面產生的dcicc.cer檔載入

            3. 完成

             

            設定https繫結

            1. 在IIS 7 中選擇要建立https的網站

            2. '編輯站台' -> '繫結'

            3. '新增'->'類型' https ->'ssl憑證'  剛才得到的.cer檔

            4. 完成