none
SoapException RRS feed

  • 問題

  • 請教一個問題

    小弟上週三寫了一個Service都很正常,但今天在連結WebService時,突然出現下列的錯誤

    第一個可能發生的例外狀況類型 'System.Web.Services.Protocols.SoapException' 發生於 System.Web.Services.dll

    網路查了方法都試過了,我也將service最簡化了且在service端第一行就加上log紀錄

    不過service也沒有執行到log那段程式碼,感覺起來是連連結都未成功就錯誤了

    有人可以給點除錯的方向嗎?

    2013年1月14日 下午 01:14

解答

  • 先檢查你的程式有沒有對 log 的路徑的讀寫權限吧。

    另外,也許你用資料庫來記錄會好一些,不然就要自己處理多個呼叫時所發生共用資源衝突問題 ...

    ex: Thead 1 正在寫檔時,Thread 2 要求開檔,Thread 2 可能就會出現例外,因為檔案已經被別人打開了。


    學習不是查個 Google 套個書上的範例就算了,而是去熟悉了解每個程式碼背後的意義,否則就算學個幾百年,它也不會是你的。

      • 小朱的技術隨手寫:http://www.dotblogs.com.tw/regionbbs/
      • 雲端學堂Facebook: http://www.facebook.com/studyazure

    • 已標示為解答 dodolon 2013年1月17日 上午 03:38
    2013年1月15日 上午 08:14
    版主
  • 請服用NLog

    http://nlog-project.org/

    它已經幫您做好多執行緒. 且能夠避免同時寫檔lock的問題

    而且完全config化, 不管您是要寫到文字檔或資料庫都有辦法.


    • 已標示為解答 dodolon 2013年1月17日 上午 03:40
    2013年1月16日 上午 08:30

所有回覆

  •  SoapExecption 的詳細內容是 ?

    SoapException.Code 屬性


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。


    2013年1月14日 下午 02:44
    版主
  • 剛剛攔到的錯誤訊息

    System.Web.Services.Protocols.SoapException: 伺服器無法處理要求。 ---> 拒絕存取路徑 'D:\WebServices\.........\Log\20130115.txt'。

    剛剛測試後只要把我寫log的程式碼移除後就正常

    但另外發現只要Log資料夾內有當天的txt檔之後就會出現此錯誤且不會再寫檔

    Log機制已執行了半年但此問題這幾天才發生,想請教是什麼原因導致的或是有更好的log機制

    Log的方法如下

    public void WriteErrorMessage(string Message)
    		{
    			StreamWriter fs = null;
    
                string LogTime = DateTime.Now.ToString("yyyyMMdd");
    
                string FileName = LogTime + ".txt";
    
    			if(!Directory.Exists(LogPath  + "Log\\"))
    			{
    				Directory.CreateDirectory(LogPath  + "Log\\");
    			}
    
    			if(File.Exists(LogPath + "Log\\" + FileName) == false)  //寫入紀錄檔
    			{
    				fs = File.CreateText(LogPath + "Log\\" + FileName);
    				fs.WriteLine(Message);
    				fs.Close();
    			}
    			else
    			{
    				fs = File.AppendText(LogPath + "Log\\" + FileName);
    				fs.WriteLine(Message);
    				fs.Close();
    							
    			}
    		}

    2013年1月15日 上午 07:37
  • 您好,
    請檢查一下,您的WebService對應的Application Pool的執行身份為誰(一般為networkService),並設定Log目錄給那個帳號有權限可以建立檔案哦!

    以上說明若有錯誤請指教,謝謝。
    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/

    2013年1月15日 上午 08:03
  • 先檢查你的程式有沒有對 log 的路徑的讀寫權限吧。

    另外,也許你用資料庫來記錄會好一些,不然就要自己處理多個呼叫時所發生共用資源衝突問題 ...

    ex: Thead 1 正在寫檔時,Thread 2 要求開檔,Thread 2 可能就會出現例外,因為檔案已經被別人打開了。


    學習不是查個 Google 套個書上的範例就算了,而是去熟悉了解每個程式碼背後的意義,否則就算學個幾百年,它也不會是你的。

      • 小朱的技術隨手寫:http://www.dotblogs.com.tw/regionbbs/
      • 雲端學堂Facebook: http://www.facebook.com/studyazure

    • 已標示為解答 dodolon 2013年1月17日 上午 03:38
    2013年1月15日 上午 08:14
    版主
  • 記錄應用程式、伺服器和安全性事件

    用這個如何 ?


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。

    2013年1月16日 上午 07:21
    版主
  • 請服用NLog

    http://nlog-project.org/

    它已經幫您做好多執行緒. 且能夠避免同時寫檔lock的問題

    而且完全config化, 不管您是要寫到文字檔或資料庫都有辦法.


    • 已標示為解答 dodolon 2013年1月17日 上午 03:40
    2013年1月16日 上午 08:30