我無法弄清楚爲什麼在生產中從我的asp.net應用程序只調用時我的web服務無法正常工作。故障調試asp.net web服務
我能夠在本地運行我的asp.net應用程序,調用Web服務(在生產中)並正確完成。
我能夠修改web.config以允許我在生產Web服務上使用測試表單並正確調用它。
我打電話給一個共享DLL中的Web服務,並且我已經檢查過我確實正在獲取更新後的dll。
這是一個非常基本的Web服務來登錄其他地方沒有處理,在我們的網站的任何異常。我爲它添加了額外的參數,並將它移動到另一個項目,以便與更多的Web服務分組。這是被稱爲ExceptionServices
我的共享DLL它自己的ASMX文件中有一類ErrorHandler
這就要求(在這一點上,測試方法)TestEmail(string to)
和所有所做的是向我發送電子郵件。
就像我說的,在本地運行我的應用程序時,它會調用生產Web服務,一切都很好。
我在託管環境中運行,無法安裝遠程調試工具,因此無法逐步執行生產代碼(除非有人知道任何技巧)。
這似乎只是這應該工作(鍵盤上撞頭)...
這裏是我的基本的Web方法:
[WebMethod]
public void TestEmail(string to)
{
MailMessage mm = new MailMessage("[email protected]", to, "test", "body here");
SmtpClient client = new SmtpClient("localhost"); // already tried tweaking smtp server, and all my options work when I use the test form
client.Send(mm);
}
的ErrorHandler類的共享DLL
public class ErrorHandler
{
public static void ThrowError(Exception ex, string sitename, string ip, string username)
{
//if (ip != "127.0.0.1") // exclude local errors when developing
{
EILib.ExceptionServices.EIExceptionHandler eh = new EILib.ExceptionServices.EIExceptionHandler();
eh.TestEmail("[email protected]");
}
}
}
最後我的global.asax開始在這裏:
protected void Application_Error(object sender, EventArgs e)
{
//Get the Error.
System.Exception anError = Server.GetLastError();
EILib.ErrorHandler.ThrowError(anError, "mydomain.com", EILib.Utilities.GetUserHostAddress(Request), User.Identity.Name);
....
}
它是否給任何形式的錯誤消息的?事件日誌中的任何內容?或者這是完全沉默的失敗? – ThatBlairGuy 2010-07-21 22:32:04
沒有我能找到的錯誤。該解決方案託管在Rackspace,所以我不相信我有任何形式的訪問事件日誌。我啓用了對Web服務的跟蹤。我可以看到來自localhost的調用,但不能看到生產,所以看起來web服務沒有被調用。所有路徑看起來都是正確的,我沒有看到我的web應用程序的跟蹤輸出中有任何內容。 – earthling 2010-07-22 17:13:45
如果一切都失敗了,總會有將調試語句寫入文本文件的完全不雅的解決方案。 – ThatBlairGuy 2010-07-23 13:07:12