Lorsqu'un client est lié avec le proxy DLL qui génère l'outil Soapsuds (Soapsuds.exe), le client lève une exception à distance au moment de l'exécution. Vous pouvez recevoir un message d'erreur est similaire à la message d'erreur suivantes :
Exception non gérée : System.Runtime.Remoting.RemotingException : Autorisation refusée pour l'activation de type soap : TestClass, http://schemas.microsoft.com/clr/nsassem/EchoExeTest/ServerExe%2C%20Version%3D0.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3Dnull. Trace de pile serveur: à System.Runtime.Remoting.Activation.ActivationListener.Activate(IConstructionCallMessage ctorMsg) à System.Runtime.Remoting.Messaging.StackBuilderSink.PrivateProcessMessage(MethodBase mb, Object[] args, Object server, Int32 methodPtr, Boolean fExecuteInContext, Object[]& outArgs) à System.Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessage(IMessage msg, Int32 methodPtr, Boolean fExecuteInContext)
Enregistrez le fichier en tant que C:\ServerCao.cfg .
Utilisez le Bloc-notes pour créer un nouveau fichier texte. Paste the following code in the file:
using System;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Metadata;
using System.Runtime.Remoting.Metadata.W3cXsd2001;
namespace EchoExeTest{
[Serializable]
public class testObject
{
public int x;
public int y;
}
[Serializable]
public struct testStruct
{
public int x;
public int y;
}
public class Server {
public static int Main(string [] args) {
Server servObj = new Server();
servObj.Initialize(args);
System.Console.WriteLine("Press ENTER to exit.");
System.Console.ReadLine();
return 0;
}
public void Usage() {
Console.WriteLine(" Usage : ServerExe -chan:channel.config -mode:mode.config");
}
public int Initialize(string[] args) {
int ret=0;
if (args.Length == 0)
Usage();
for (int i=0;i<args.Length;i++) {
if (
String.Compare(args[i],"HELP", true) == 0 ||
String.Compare(args[i],"?", true) == 0 ||
String.Compare(args[i],"/h", true) == 0 ||
String.Compare(args[i],"-h", true) == 0 ||
String.Compare(args[i],"-?", true) == 0 ||
String.Compare(args[i],"/?", true) == 0
) {
Usage();
return -1;
}
String arg = args[i];
String value = null;
if (args[i][0] == '/' || args[i][0] == '-'){
int index = args[i].IndexOf(':');
if (index != -1) {
arg = args[i].Substring(1, index-1);
//Make sure that a colon (:) is not the last character.
if (index == (args[i].Length - 1))
throw new Exception("Argument cannot be empty -> " + args[i]);
value = args[i].Substring(index+1);
}
else
arg = args[i].Substring(1);
}
//Process the input sources.
if (String.Compare(arg, "chan", true) == 0) {
RemotingConfiguration.Configure(value);
}
else if (String.Compare(arg, "mode", true) == 0) {
RemotingConfiguration.Configure(value);
}
}
ret=100;
return ret;
}
}
public class TestClass : MarshalByRefObject {
public int EchoInt(int intval) {
Console.WriteLine("Method Called");
return intval;
}
public string EchoString(string strval) {
Console.WriteLine("Method Called");
return strval;
}
public DateTime EchoDateTime(DateTime dval) {
return dval;
}
public void voidFunc(){
return;
}
public int EchoParam(int intval) {
return intval;
}
public void SendParam(int intval) {
return;
}
public int GetParam() {
return 10;
}
public int EchoRefParam(ref int intval) {
intval++;
return 100;
}
public void SendRefParam(ref int intval) {
intval++;
return;
}
public void OutParam(out int intval) {
intval=100;
}
public testStruct echoStruct(testStruct ts) {
return ts;
}
public testObject echoObject(testObject to) {
Console.WriteLine("Method Called");
return to;
}
public int[] echoArray(int[] intArray) {
return intArray;
}
}
}
Enregistrez le fichier en tant que ServerExe.cs .
Utilisez le Bloc-notes pour créer un nouveau fichier texte. Collez le code suivant dans le fichier :
Pour Visual Studio .NET 2002, cliquez sur Démarrer pointez sur programmes , pointez sur Visual Studio .NET , pointez sur Outils de Visual Studio .NET et puis cliquez sur invite de commande Visual Studio .NET pour.
Pour Visual Studio .NET 2003, cliquez sur Démarrer , pointez sur programmes , pointez sur Visual Studio .NET 2003 , pointez sur Outils de Visual Studio .NET et puis cliquez sur invite de commande Visual Studio .NET 2003 .
À l'invite de commandes, tapez C: et puis appuyez sur la touche ENTRÉE.
Tapez Build.bat et puis appuyez sur la touche ENTRÉE.
Exécuter l'application serveur accès distant et l'application client à distance.
Vous pouvez recevoir le message d'erreur qui est mentionné dans la section « Symptômes » de cet article.
IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d?articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d?avoir accès, dans votre propre langue, à l?ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s?exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s?efforce aussi continuellement de faire évoluer son système de traduction automatique. Si vous relevez des erreurs graves et souhaitez contribuer à l?amélioration du système, vous pouvez compléter l?enquête à votre disposition dans le bas des articles.
La version anglaise de cet article est la suivante: 828987
(http://support.microsoft.com/kb/828987/en-us/
)
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.
Merci ! Vos commentaires sont très utiles pour l'amélioration de notre contenu d'aide et de support. Si vous avez besoin d'aide complémentaire, veuillez consulter la page d'accueil d'aide et support.