故障调试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);
....
}
验证SMTP服务您的生产服务器上运行。检查它是否配置为允许默认凭据(托管公司可能需要电子邮件凭据)。检查服务是否配置为从本地计算机接收邮件(而不是使用其中一种拾取目录传送方法)。
SMTP不是问题。我能够使用测试表单并成功发送电子邮件。我也能够从本地主机上运行的应用程序成功调用Web服务。另外,我在前面调用的Web服务,托管在同一台服务器上也发送了一封电子邮件。 – earthling 2010-07-21 22:20:59
它必须是一个配置问题。如果Web服务独立工作,那么它就是调用它的代码。包含对Web服务的引用的可执行文件是否在其配置中具有正确的URL? (它仍然指向旧服务?) – ThatBlairGuy 2010-07-22 01:45:26
我在添加新服务时删除了旧服务。我也确认它有正确的网址。我浏览了Web References文件夹中的文件,以及在哪里看到一个URL,这是正确的。 – earthling 2010-07-22 17:04:43
它是否给任何形式的错误消息的?事件日志中的任何内容?或者这是完全沉默的失败? – 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