使用SOAP访问数据库的最佳方法

时间:2011-05-05 13:25:26

标签: c# web-services architecture soap

我目前正在努力了解使用C#的SOAP协议,我在Google中找到了一些示例,并了解了信封,标题,正文。

我使用webservice进行身份验证,但我想知道在哪里可以使用提供的用户和密码来实现访问数据库的类或方法,我的意思是,soap header有user =“john”pass =“odos223kiwi0X”服务器收到标题,现在用用户提供的数据库访问并检查密码。

如果正确的选项在soap类中创建自定义方法来执行此操作吗?

1 个答案:

答案 0 :(得分:2)

您可以创建一个类,如下所示:

using System.Diagnostics;
using System.Xml.Serialization;
using System;
using System.Web.Services.Protocols;
using System.Web.Services;
using System.Net;

[System.Web.Services.WebServiceBindingAttribute(
Name = "FunctionName",
Namespace = "nameSpace")]
public class ClassName:
System.Web.Services.Protocols.SoapHttpClientProtocol
{
    public ClassName(string uri) // Constractor
    {
        this.Url = uri; // the full path for your server we  will make later on in the answer
    }

    [System.Web.Services.Protocols.SoapDocumentMethodAttribute(
    "nameSpace/ClassName",
    RequestNamespace = "nameSpace",
    ResponseNamespace = "nameSpace",
    Use = System.Web.Services.Description.SoapBindingUse.Literal,
    ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]

    public object[] FunctionName(string Parameter1)
    {
        object[] results = { };

        try
        {
            results = this.Invoke("FunctionName", new object[] { Parameter1});
            return ((object[])(results[0]));
        }
        catch (Exception error)
        {
            object[] webException = { -1, error.Message };
            return (webException);
        }
    }
}

现在我们创建了asmx服务:

创建一个Web服务并将其添加到命名空间下:

[WebService(Namespace = "NameSpace")] //same namespace you wrote in the class

然后添加你的函数和Object []作为返回值。

[WebMethod]
public object[] FunctionName(string Parameter1) // function name and parameters should be the same in your class where you called the web service (case sensitive)
{
   ... // your code
}

**您可以下载http://www.fiddler2.com/fiddler2/version.asp,以便查看和追踪即将离任的请求

如果您需要更远的信息,请发回给我。