C# Web服务和客户端DLL
我有一个web服务和一个客户端DLL。web服务使用Oracle数据库 为了测试客户端DLL,我复制了web服务并将其指向测试数据库。然后我复制了客户端DLL,并使用AddWebReference添加了这个测试web服务 我想做的是使用一个web服务和一个客户端DLL,但能够告诉客户端DLL使用测试或生产数据库,而不是两个相同的web服务和客户端DLL 编辑 我把问题说错了。我需要做的是使用一个客户端DLL和两个web服务—一个生产版本,一个开发/测试版本,并且能够以某种方式告诉客户端DLL要使用哪些web服务。 这是如何使用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要使
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设置为客户端应用程序设置的任何内容。我更新了代码示例。希望我没有错过任何东西!