2012年9月27日 星期四

jQuery ajax post 在IIS中無法存取 WebService (*.asmx)



有某段程式碼如下,在本機測試時沒問題,一放到IIS上就失敗

$.ajax({
type: "POST",
url: "/Services/CommonService.asmx/QueryNation",
data: '',
async: false,
success: function (result) {
var msg = $(result.lastChild).text();
alert(msg);
}
});


有兩種方式解決:

1. 在IIS上設定虛擬目錄,指向存放webservice的資料夾

2. 在web.config上設定webService區段,如下:
<!-- 設定允許Service存取 -->
<configuration>
 <system.web>
    <webServices>
      <protocols>
        <add name="HttpPost" />
      </protocols>
    </webServices>
 </system.web>
</configuration>

2012年9月14日 星期五

替IIS設定網站限制存取IP

先到微軟下載Web Platform後安裝執行

在安裝的項目當中仔細的找一下,會有一個叫IP 及網域限制的項目,找到後並安裝它。

接下來回到IIS設定,在左側點選要限制的站台,然後在右側的檢視功能畫面中找到IP位址及網域限制這個項目並點選開啟它,之後在右側的動作點選新增允許項目,在特定IP位址輸入您要允許的IP後按確定(當然也可以使用IP位址範圍來限制)。

當設定完成之後,必須還要限制除了剛剛設定好的IP之外,其他的任何IP都不得存取此站台,那就在右側的動作點選編輯功能設定,將未指定的用戶端的存取,設定為拒絕後確定。

完成!

注: IIS為7.5

解決:使用者'IIS APPPOOL\ASPNET v4.0'的登入失敗

發生的原因主要是因為網站所使用的'應用程式集區',預設使用'ApplicationPoolIdentity'做為識別,因此當網站使用integrated security=SSPI字串登入SQL Server時就會發生此錯誤。

解決的方法有兩種:
1. 不要使用 integrated security=SSPI 做為驗證的方法,改用 User Id=”xxx”; Password=”ooo” 來登入資料庫。

2. 到IIS應用程式集區,選擇您的網站所使用的集區,按右鍵 -> 進階設定 -> 識別,選擇NetworkService後按確定。接下來使用Microsoft SQL Server Management Studio,登入到您的SQL Server,找到安全性 -> 登入 -> 按右鍵點選’新增登入’-> 點選'搜尋'-> 輸入net ->點選’檢查名稱’ -> 在相符名稱當中選擇’NETWORK SERVICE’ -> 確定 -> 確定 -> 確定。接下來到伺服器角色把'sysadmin'打勾,按確定後完成。(當然伺服器角色的權限可依安全需求變更。)