【茶包射手日記】SharePoint導致ASP.NET PageMethod失效

接獲報案,某ASP.NET PageMethod程式部署至正式主機失效,以jQuery送出POST Request,未傳回JSON結果而是傳回完整網頁,如同未設[WebMethod]屬性一般。

經過對照測試,鎖定問題只有在ASP.NET網站跟SharePoint 2007並存於同一IIS站台時發生,只要脫離Sharepoint魔掌就一切如常。

爬文找到有人提及需確認web.config已加入ScriptModule,PageMethod才能正常運作:

<httpModules>
  <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
</httpModules>

但問題專案為.NET 4.0,預設已載入ScriptModule,不像3.5需額外加掛,何況同一web.config設定在沒遇到SPS時是正常的!推測SPS涉有重嫌,加上有前科,即刻發出拘票抓回審問!

打開SPS的web.config檔找到<httpModules>的一瞬間,我就明白了!

問題出在第一列的<clear />,SPS把預設的HttpModule清光光,再依序重新掛上所需模組。這樣子就算.NET 4預設已載入ScriptModule也被清掉,少了ScriptModule,造成PageMethod失效。

找出原因,要解決只是一塊蛋糕。在使用PageMethod ASP.NET web.config補上ScriptModule:

<httpModules>
  <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
</httpModules>

搞定收工!

歡迎推文分享:
Published 19 August 2014 08:40 PM 由 Jeffrey
Filed under: , ,
Views: 4,448



意見

沒有意見

你的看法呢?

(必要的) 
(必要的) 
(選擇性的)
(必要的) 
(提醒: 因快取機制,您的留言幾分鐘後才會顯示在網站,請耐心稍候)

5 + 3 =

搜尋

Go

<August 2014>
SunMonTueWedThuFriSat
272829303112
3456789
10111213141516
17181920212223
24252627282930
31123456
 
RSS
創用 CC 授權條款
【廣告】
twMVC

Tags 分類檢視
關於作者

一個醉心技術又酷愛分享的Coding魔人,十年的IT職場生涯,寫過系統、管過專案, 也帶過團隊,最後還是無怨無悔地選擇了技術鑽研這條路,近年來則以做一個"有為的中年人"自許。

文章典藏
其他功能

這個部落格


Syndication