0 votes

Mono, xsp2, npgsql Impossible de charger l'assembly

Je suis en train d'écrire un service web et j'ai deux classes:

<%@ WebService Language="C#" Class="CairoParts.ProductsInfoWS.ProductsInfoWS.cs" %>

using System;
using System.IO;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;

namespace CairoParts.ProductsInfoWS
{    
    [WebService(Namespace = "http://localhost:8081/ProductsInfoWS")]     
    public class ProductsInfoWS : System.Web.Services.WebService
    {        
        [WebMethod]
        public List ReceiveFile(byte[] bytes, string fileName, string supplier)
        {
        }
    {
}

et Database.cs:

using System;
using System.Data;
using System.Configuration;
using Npgsql;

namespace CairoParts.ProductsInfoWS
{ 
   public class Database
    {  
    }
 }

Lorsque je lance xsp2 et que je saisis dans le navigateur http://localhost:8081/ProductsInfoWS.asmx, je reçois cette erreur:

/usr/lib/mono/2.0/gmcs.exe:22858): WARNING **: L'assembly suivante référencée depuis /tmp/vadmin-temp-aspnet-0/b8083b1b/assembly/shadow/94001eba/43c949ff_d7c95745_00000001/CairoParts.ProductsInfoWS.dll n'a pas pu être chargée: Assembly: Npgsql (assemblyref_index=2) Version: 2.0.6.0 Public Key: 5d8b90d52f46fda7 L'assembly n'a pas été trouvé dans le Global Assembly Cache, dans un chemin répertorié dans la variable d'environnement MONO_PATH, ou à l'emplacement de l'assembly en cours d'exécution (/tmp/vadmin-temp-aspnet-0/b8083b1b/assembly/shadow/94001eba/43c949ff_d7c95745_00000001).

Mon fichier Npgsql.dll se trouve dans le répertoire 'bin'. Qu'est-ce qui ne va pas...

0voto

t0mm13b Points 21031

Il se pourrait que le dll Npgsql.dll soit signé avec un nom fort et donc doive être placé dans le cache d'assembly global (GAC), avez-vous essayé de copier le dll à l'endroit où se trouve le GAC ?

En espérant que cela vous soit utile, Cordialement, Tom.

0voto

Gonzalo Points 11758

Exécutez :

monodis --assembly bin/Npgsql.dll

pour vérifier que votre assembly a la même version et la même clé publique que celle référencée dans CairoParts.ProductsInfoWS.dll.

Dans mon installation locale de Mono compilée à partir des sources, j'ai 3 répertoires dans le gac pour Npgsql :

1.0.5000.0__5d8b90d52f46fda7
2.0.0.0__5d8b90d52f46fda7
4.0.0.0__5d8b90d52f46fda7

et aucun d'entre eux n'a la version 2.0.6.0.

Il se peut que vous ayez besoin de recompiler CairoParts.ProductsInfoWS.dll afin qu'il fasse référence aux assemblies présents dans votre système.

0voto

Adrian Serafin Points 4442

Je ai recompilé mon projet et exécuter la commande que vous avez suggéré, voici la sortie:

Table d'Assemblage
Nom:          Npgsql
Algorithme de hachage: 0x00008004
Version:       2.0.6.0
Drapeaux:         0x00000001
Clé publique:     BlobPtr (0x000020b1)
Dump:
0x00000000: 00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 
0x00000010: 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 
0x00000020: 2B 3C 59 0B 2A 4E 3D 34 7E 68 78 DC 0F F4 D2 1E 
0x00000030: B0 56 A5 04 20 25 0C 66 17 04 43 30 70 1D 35 C9 
0x00000040: 80 78 A5 DF 97 A6 2D 83 C9 A2 DB 2D 07 25 23 A8 
0x00000050: FC 49 13 98 25 4C 6B 89 32 9B 8C 1D CE F4 3A 1E 
0x00000060: 7A A1 61 53 BC EA 2A E9 A4 71 14 56 24 82 6F 60 
0x00000070: D7 C8 E7 1C D0 25 B5 54 A0 17 7B D9 35 A7 80 96 
0x00000080: 29 F0 A7 AF C7 78 EB B4 AD 03 3E 1B F5 12 C1 A9 
0x00000090: C6 CE EA 26 B0 77 BC 46 CA C9 38 00 43 5E 77 EE 
Culture:

Il semble que les versions de npgsql sont correctes, mais le service Web continue de produire la même erreur.

J'ai un peu résolu ce problème en mettant la classe Database dans le fichier asmx du service Web, mais c'est plus une solution de contournement qu'une vraie solution...

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X