我有一个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");
答案 0 :(得分:0)
您需要做的是更改WEB服务以获取将用于构建到DB的连接字符串的参数。
然后更改客户端DLL以将该参数作为调用或连接的一部分传递。
然后,您可以将客户端DLL配置为使用您喜欢的任何技术来传递参数。我的建议可能是从客户端DLL中生成的代理派生一个类,并在客户端代码中使用它。
如果没有具体的实施细节,我可以更精确。