【问题标题】:Calling Webservice from another server从另一台服务器调用 Webservice
【发布时间】:2013-01-13 20:55:07
【问题描述】:

我创建了一个名为 MailSerderWS.asmx 的 Web 服务,其代码在 AppCode/MailSerderWS.cs 中,它在本地 PC 上运行良好,但我对其在生产环境中的使用有一些疑问:

  1. 基本上我正在创建这个服务来从我的服务器发送电子邮件,因为我的服务器不支持 asp,所以不能使用编码,所以我打算将 web 服务放在我的朋友服务器上并调用 web 服务从我的服务器发送邮件网站。
  2. 在我的朋友服务器上部署这个网络服务之前,我想在我的本地机器上检查这个网络服务,用我的 html 网页。下面是我正在运行的 jquery。 但它从不回发,因此不会将邮件发送到我的收件箱。
  3. 我应该如何将这个网络服务上传到我朋友的实时服务器上,以便我可以在我的 html 页面中使用这个网络服务以及我将如何使用它,因为我认为如果我使用上面的 ajax 方法,它永远不会执行

第 2 项的代码:

$("#btnSendMail").click(function(){
                     $.ajax({
                    type: "POST",
                    url: "http://audiomedia.dev.asentechdev1.com/MailSenderWS.asmx/SendMail",
                    data: "{'sendermail':'aelectricwala52@gmail.com', 'type':'standalone app', 'body':'success'}",
                    contentType: "application/json; charset=utf-8",
                    dataType: "json",
                    success: function(msg) {
                      alert(msg)
                    },
                    error: function(msg){
                        alert(msg.responseText);
                    }
                  });
                  })

提前致谢。

【问题讨论】:

    标签: asp.net web-services jquery


    【解决方案1】:

    我看到两个语法错误。试试这个:

    $("#btnSendMail").click(function(){
                        $.ajax({
                            type: "POST",
                            url: "http://localhost:16189/MailSenderWS.asmx/SendMail",
                            data: "{'sendermail':'aelectricwala52@gmail.com', 'type':'standalone app', 'body':'success'}",
                            contentType: "application/json; charset=utf-8",
                            dataType: "json",
                            success: function(msg) {
                              alert(msg)
                            },
                            error: function(msg){
                                alert(msg);
                            }
                          });
                      });
    

    不久前我写了一篇关于 asmx webservice 方法并从 Jquery 调用它的文章。这可能会对您有所帮助:http://www.tomot.de/en-us/article/8/asp.net/how-to-use-jquery-to-call-a-webservice-asmx-method

    编辑: 根据您的更新,我尝试按 Ajax 调用它,但这对我也不起作用。该服务似乎部署正确,因为您可以在浏览器中调用 URL。我将您的服务添加为服务参考,调用您的方法并使用Fiddler 捕获通信。

    连接到服务器没有问题,但是服务的响应表明与您的电子邮件帐户相关的身份验证问题:

    <?xml version="1.0" encoding="utf-8"?>
    <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <soap:Body>
    <SendMailResponse xmlns="http://tempuri.org/">
    <SendMailResult>
    Fail Reason: The SMTP server requires a secure connection or the client was not authenticated. The server response was: 5.7.0 Must issue a STARTTLS command first. sk1sm6949585pbc.0
    </SendMailResult>
    </SendMailResponse>
    </soap:Body>
    </soap:Envelope>
    

    尝试在没有 Web 服务的情况下从本地计算机发送电子邮件,看看是否可以正常工作。之后重新部署,你应该准备好了。
    我还建议您更改 Web 服务的 Url,因为现在您已将其发布到网上并且不涉及身份验证,因此有人可能会滥用它。

    编辑2: 我会告诉你我是如何使用 Fiddler 的。首先你需要下载并安装它。

    创建一个新的 .net 应用程序(例如 ConsoleApplication)。在Solution Explorer 中,右键单击项目并单击Add Service Reference。使用网址http://audiomedia.dev.asentechdev1.com/MailSender.asmx

    这会在您的项目中生成一些代码。

    启动 Fiddler 并在您的 ConsoleApplication 中执行此代码(根据生成的名称,您需要调整此示例):

        ServiceReference1.MailSenderSoapClient client = new ServiceReference1.MailSenderSoapClient();
        client.SendMail();
    

    在 Fiddler 中,您会在左侧站点上看到 Web 会话。添加了带有您的网址的新条目。点击它。在底部区域的右侧,您会看到消息

    响应已编码,可能需要在检查前进行解码。 点击这里进行转换。

    如果您单击该消息并选择 TextView TabPage,您将从您的服务中获得以下结果:

    <?xml version="1.0" encoding="utf-8"?>
    <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <soap:Body>
    <SendMailResponse xmlns="http://tempuri.org/">
    <SendMailResult>Success</SendMailResult>
    </SendMailResponse>
    </soap:Body>
    </soap:Envelope>
    

    【讨论】:

    • 嗨@citronas你能分享你发现的2个语法错误是什么,我无法弄清楚。
    • 现在我正在使用来自服务器的 web 服务,我已将 asmx 文件添加到另一个站点的根目录(在我的朋友服务器上)。现在我在 jquery.ajax 调用 url 方法中传递:(audiomedia.dev.asentechdev1.com/MailSenderWS.asmx/Sendmail),但这仍然不起作用,我什至没有收到错误消息使用错误:function(msg){alert(msg.responseText)} 你能请帮忙
    • 成功和错误之间没有逗号,最后少了一个分号
    • 好的,我已经更改了内容。您可以使用更新的代码查看我的更新答案,但仍然无法正常工作
    • 嗨@citronas我已经更新了服务(audiomedia.dev.asentechdev1.com/MailSender.asmx/SendMail)你能告诉我如何用fiddler检查它,这次webservice不需要任何参数
    猜你喜欢
    • 2013-01-24
    • 1970-01-01
    • 2014-01-15
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-17
    相关资源
    最近更新 更多