C# Web服务和客户端DLL

C# Web服务和客户端DLL,c#,web-services,.net-3.5,asmx,c#-2.0,C#,Web Services,.net 3.5,Asmx,C# 2.0,我有一个web服务和一个客户端DLL。web服务使用Oracle数据库 为了测试客户端DLL,我复制了web服务并将其指向测试数据库。然后我复制了客户端DLL,并使用AddWebReference添加了这个测试web服务 我想做的是使用一个web服务和一个客户端DLL,但能够告诉客户端DLL使用测试或生产数据库,而不是两个相同的web服务和客户端DLL 编辑 我把问题说错了。我需要做的是使用一个客户端DLL和两个web服务—一个生产版本,一个开发/测试版本,并且能够以某种方式告诉客户端DLL要使

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

为了测试客户端DLL,我复制了web服务并将其指向测试数据库。然后我复制了客户端DLL,并使用AddWebReference添加了这个测试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");

您需要做的是更改WEB服务以获取一个参数,该参数将用于构造到DB的连接字符串

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

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


如果没有具体的实现细节,我无法更精确地解释。

查看Web.config转换。约翰,你能详细说明一下吗?我可以这样做,或者你可以用谷歌搜索。简单地说,它们允许您保留包含连接字符串的基本web.config,然后转换文件描述如何为每个部署环境和/或生成配置自动编辑基本配置文件。只要给定环境的连接字符串(例如,测试环境与生产环境)在一次SQL调用到下一次SQL调用期间保持不变,这应该对您有效。我通过向客户端DLL添加一个公共方法来设置web服务URL,从而解决了此问题。然后在每个API中,我将代理URL设置为客户端应用程序设置的任何内容。我更新了代码示例。希望我没有错过任何东西!