故障调试asp.net web服务

问题描述:

我无法弄清楚为什么在生产中从我的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); 
     .... 
    } 
+0

它是否给任何形式的错误消息的?事件日志中的任何内容?或者这是完全沉默的失败? – ThatBlairGuy 2010-07-21 22:32:04

+0

没有我能找到的错误。该解决方案托管在Rackspace,所以我不相信我有任何形式的访问事件日志。我启用了对Web服务的跟踪。我可以看到来自localhost的调用,但不能看到生产,所以看起来web服务没有被调用。所有路径看起来都是正确的,我没有看到我的web应用程序的跟踪输出中有任何内容。 – earthling 2010-07-22 17:13:45

+0

如果一切都失败了,总会有将调试语句写入文本文件的完全不雅的解决方案。 – ThatBlairGuy 2010-07-23 13:07:12

验证SMTP服务您的生产服务器上运行。检查它是否配置为允许默认凭据(托管公司可能需要电子邮件凭据)。检查服务是否配置为从本地计算机接收邮件(而不是使用其中一种拾取目录传送方法)。

+0

SMTP不是问题。我能够使用测试表单并成功发送电子邮件。我也能够从本地主机上运行的应用程序成功调用Web服务。另外,我在前面调用的Web服务,托管在同一台服务器上也发送了一封电子邮件。 – earthling 2010-07-21 22:20:59

+0

它必须是一个配置问题。如果Web服务独立工作,那么它就是调用它的代码。包含对Web服务的引用的可执行文件是否在其配置中具有正确的URL? (它仍然指向旧服务?) – ThatBlairGuy 2010-07-22 01:45:26

+0

我在添加新服务时删除了旧服务。我也确认它有正确的网址。我浏览了Web References文件夹中的文件,以及在哪里看到一个URL,这是正确的。 – earthling 2010-07-22 17:04:43