Web服务和客户端DLL

时间:2014-04-08 23:35:30

标签: c# web-services .net-3.5 asmx c#-2.0

我有一个Web服务和一个客户端DLL。 Web服务使用Oracle数据库。

为了测试客户端DLL,我复制了Web服务并使其指向测试数据库。然后我复制了客户端DLL并使用“添加Web引用”添加了此测试Web服务。

我想要做的是使用一个Web服务和一个客户端DLL,但能够告诉客户端DLL使用测试或生产数据库而不是两个相同的Web服务和客户端DLL。

修改

我误解了这个问题。我需要做的是使用一个客户端DLL和两个Web服务(一个生产版本,一个开发/测试版本),并能够以某种方式告诉客户端DLL使用哪些Web服务。 这是如何使用Web服务,客户端DLL和客户端应用程序的示例:

public class DSSService : System.Web.Services.WebService
{
    public DSSService()
    {

    }
    [WebMethod(MessageName = "GetFacility", BufferResponse=true, Description = "blah.")]

    public Facility GetFacility(string sFDBID, string sZip, string sFinNo)
    {
        Facility oFacility = ...;
        ...
        return oFacility;
    }
    ....
}

客户端DLL:

namespace DSSConfig
{
    string sWSURL;

    public class Config
    {
        public Config()
        {
        }

        public void SetWSURL(string sURL)
        {
            sWSURL = sURL;
        }

        public Facility GetFacility(string sFDBID, string sZip, string sFinNo)
        {
            DSSService Proxy = new DSSService();
            proxy.Url = sWSURL;
            Facility oFacility = Proxy.GetFacility(sFDBID, sZip, sFinNo);
            return  oFacility;
        }

在客户端应用程序中,将DSSConfig DLL作为参考:

DSSConfig oConfig = new DSSConfig();
oConfig.SetWSURL("http://myserver/WebService1/service.asmx");
oConfig.GetFacility("blah", "blah", "blah");

1 个答案:

答案 0 :(得分:0)

您需要做的是更改WEB服务以获取将用于构建到DB的连接字符串的参数。

然后更改客户端DLL以将该参数作为调用或连接的一部分传递。

然后,您可以将客户端DLL配置为使用您喜欢的任何技术来传递参数。我的建议可能是从客户端DLL中生成的代理派生一个类,并在客户端代码中使用它。

如果没有具体的实施细节,我可以更精确。