天天看點

Sharepoint 2010 自定義WebService 找不到網站應用程式

錯誤描述:Net 開發WebService調用Microsoft.SharePoint.dll的伺服器端對象模型,出現找不到網站的應用程式,或者出現500錯誤。

錯誤截圖:

Sharepoint 2010 自定義WebService 找不到網站應用程式

[Webservice調用頁錯誤]

[完整的錯誤提示]

[WebMethod(Description = "擷取WebID")]

public string GetWebID(string SiteUrl)

{

      SPSite site = null;

     SPWeb web = null;

     site = new SPSite(SiteUrl);

      web = site.OpenWeb();

      return "ID:" + web.ID.ToString();  

}

[測試代碼,擷取WebID]

  最初以為是備用通路映射,或者修改Host檔案的問題,因為找不到應用程式麼,然後在浏覽器裡打開url,發現可以打開;再考慮是不是權限不夠,因為是net調用sharepoint的dll,然後提權進行操作,發現也不能解決問題。

  查了很久,後來發現,代碼預覽有問題,但是釋出以後,調用WebService卻沒有問題,感覺很奇怪,但是沒有辦法進行調試了。後來查資料,發現說VS的iis對64位支援有問題,雖然自己并不清楚是不是這裡的問題,但是釋出以後,調試本機的iis,發現問題不存在了(感謝這位部落客的文章,參考博文位址附後)。

解決方法: 把自己建的項目釋出到本地iis,然後 屬性 – web – 使用本地iis web伺服器,填寫格式[url:port/網站名稱],然後可以調試了。

Sharepoint 2010 自定義WebService 找不到網站應用程式

  修改以後,發現調用的時候,還有抛黃頁的現象[“拒絕通路。 (異常來自 HRESULT:0x80070005 (E_ACCESSDENIED))”],後來,經朋友提醒,發現木有提權,菜鳥就是菜鳥,之前調試的暈頭轉向,居然忽略了提權。

提權代碼:

SPSecurity.RunWithElevatedPrivileges(delegate()

代碼段….

});

  再有就是,有人說寫控制台,也會出現找不到應用程式的情況,将生成的目标平台調成64位,或者調成[Any cpu],自己到沒有遇到過,不過這些對WebService調用sharepoint.dll是不管用的。

繼續閱讀