3

我是 Web 服务的新手。我在 Visual Web Developer 2010 Express 中创建了一个新网站,并向网站的 .asmx 页面添加了一个服务引用,并为其提供了 BBImportLead 的命名空间。

最终结果是将多个客户从我们的 PICK/Universe 数据库加载到一个 XML 文件中,通过 ASP.NET 从 xml 文件中获取每个标签(FName、LName 等)的 InnerText 字符串,通过 SOAP 将字符串发送到Web 服务,并将结果显示给用户(现在在标签中,但将来可能会根据结果采取措施,例如如果已成功发送 xml 文件,则将其删除)。

我尝试过使用 VB 和 C# 遵循不同的示例,但我没有让它工作。看起来我能够非常接近使用 VB 的这个例子: http ://www.asp.net/web-forms/videos/building-35-applications/an-introduction-to-soap-based-web-服务-with-visual-web-developer-2008

这是我后面的 Default.aspx.vb 代码。我的目标是在我创建的标签中显示来自 Web 服务的字符串响应。

    Partial Class _Default
    Inherits System.Web.UI.Page

    Protected Sub Button1_Click(sender As Object, e As System.EventArgs) Handles Button1.Click
        Dim BBImportLeadService As New BBImportLead.BBCallDataSoapClient

        Dim doc As New System.Xml.XmlDocument
        doc.Load("bborder.xml")

        Dim AuthenHead = doc.GetElementsByTagName("AuthenHead")
        Dim FName = doc.GetElementsByTagName("FName").ToString
        Dim LName = doc.GetElementsByTagName("LName").ToString



        Label1.Text = BBImportLeadService.ImportLead(AuthenHead:=AuthenHead, FName:=FName, LName:=LName)


    End Sub
End Class

我得到的错误与 AuthenHead 变量有关,因为它不是字符串。这是一个 tns 值,但我不确定如何使用 doc.GetElementsByTagName 并将其转换为服务要求的内容?

错误 1 ​​类型“System.Xml.XmlNodeList”的值无法转换为“BBImportLead.AuthenHead”

谁能指出我正确的方向?如何修复该 tns 错误,如果这看起来应该可以工作?


更新:我为我的 C# 尝试找到了这段新代码。这会更好吗?它似乎发送了一些东西并得到了响应,但我没有网络服务的用户名和密码来获得他们的响应。而且我也没有看到在他们的 web 服务上调用特定函数的位置来让我的 xml 数据进入。

string data = "bborder.xml";
        string url = "urltakenoutforexample";
        string servresponse = "the response from the server";

        // build request objects to pass the data/xml to the server
        byte[] buffer = Encoding.ASCII.GetBytes(data);
        HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
        request.Method = "POST";
        request.ContentType = "application/soap+xml";
        request.ContentLength = buffer.Length;
        Stream post = request.GetRequestStream();

        // post data and close connection
        post.Write(buffer, 0, buffer.Length);
        post.Close();

        // build response object
        HttpWebResponse response = request.GetResponse() as HttpWebResponse;
        Stream responsedata = response.GetResponseStream();
        StreamReader responsereader = new StreamReader(responsedata);
        servresponse = responsereader.ReadToEnd();

        lbNodes.Items.Add(servresponse);
4

1 回答 1

0

首先,我强烈建议不要使用网站“项目”。这仅适用于简单的网站。如果您使用网络服务,那么我不会称您的网站为“简单”。

其次,您根本不应该使用 ASMX 服务。这是一项不应该用于新开发的遗留技术。您应该将 WCF 用于所有新开发。

我在http://asp.net上留下了评论,请他们把那个旧视频拿下来。它让你走错了路。

于 2012-02-09T20:40:00.797 回答