Bonjour,
Je developpe en ce moment une application de synchronisation de données en utilisant le Microsoft Synchronization Framework. Cette application permet de synchroniser des données entre un pocket pc et un sql server distant. Pour contacter la base sql server je passe par un webservice, cette architecture se nomme n-tier (cf : http://www.syncguru.com/projects/ - demo III).
L'appli marche tres bien pour 1 client mais je souhaiterais qu'elle soit multiclient, c'est à dire au travers du même webservice me connecter à différentes BDD. Pour cela il faudrait que je passe en argument de ma fonction distante le nom de la BDD voulue.
Voici le code du webservice :
<code>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class Service : System.Web.Services.WebService
{
private DbServerSyncProvider _serverProvider;
private nomBDD = null;
public Service ()
{
_serverProvider = new DbServerSyncProvider();
SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder();
// 1. Preparation de la connection bdd server et attachement au syncagent
builder["Data Source"] = "adress";
builder["Initial Catalog"] = nomBDD;
builder["User ID"] = "user";
builder["Password"] = "pass";
SqlConnection serverConnection = new SqlConnection(builder.ConnectionString);
_serverProvider.Connection = serverConnection;
.............(code de synchro)...............
}
</code>
Voici le code côté client :
<code>
private void buttonSynchronize_Click(object sender, EventArgs e)
{
try
{
//
// 1. Create instance of the sync components (client, agent, server)
// In this demo the sync agent will connect to the server through WebService.
// A web reference is added to the project and I created a thin wrapper SyncServerProviderProxy
// That inherits from SyncServerProvider base class and redirect the calls to the web service.
//
//
//Initialisation de l'agent et des webservices
string nomDB = "InventaireMSF2";
Microsoft.Synchronization.SyncAgent syncAgent = new Microsoft.Synchronization.SyncAgent();
SyncWebServiceProxy.Service syncWebService = new SyncWebServiceProxy.Service();
System.Net.NetworkCredential nc = new System.Net.NetworkCredential();
nc.Domain = "SRVPOCKET";
nc.UserName = "IUSR_SRVPOCKET";
nc.Password = "azerty1234";
syncWebService.Credentials = nc;
syncWebService.PreAuthenticate = false;
syncWebService.Url = "http://idtpf.no-ip.org/SyncWebServiceProxy/Service.asmx";
syncAgent.RemoteProvider = new ServerSyncProviderProxy(syncWebService);
}
</code>
J'ai essaye d'ajouter dans le webservice une webfonction init(string nomBase) dans laquelle j'ai mis this.nomBDD = nomBase et j'ai copié le code de la fonction service() ensuite sur le client après :
SyncWebServiceProxy.Service syncWebService = new SyncWebServiceProxy.Service();
j'ai rajouté
syncWebService.init("BaseX");
Mais lorsque j'execute mon appli au moment de la synchro je recoit le message "une exception a ete leve par la cible d'un appel"
Je ne vois pas comment m'en sortir alors que cela à l'air simple.
Si quelqu'un peut m'aider j'en serais très heureux =)
Sam
Mais cela ne marche pas il me