Bonjour à tous,

J'ai un service WCF pour AJAX (*.svc) qui fonctionne bien... quand il fonctionne.

En fait, des fois, en plein milieu d'une session, mon web service me retourne "500 Internal Server Error" au lieu du contenu XML transformé attendu.

Voici mon code (on peut difficilement faire plus simple) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
using System;
using System.ServiceModel;
using System.ServiceModel.Activation;
using System.ServiceModel.Web;
using System.Xml;
using System.Xml.Xsl;
using System.Web;
using System.IO;
 
[ServiceContract(Namespace = "")]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class Service  { // : WebService
    // Ajoutez l'attribut [WebGet] pour utiliser HTTP GET
    [OperationContract] // ResponseFormat=WebMessageFormat.Json, BodyStyle=WebMessageBodyStyle.WrappedRequest
    [WebInvoke(Method = "GET", ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.WrappedRequest)]
    public string DoWork(string nom) {
        try {
            string ret = "";
            string chemRacine = HttpContext.Current.Server.MapPath("~/");
            string ficXml = chemRacine + "xsd7\\LCN010000-001-A-TES-A-02.xml";
            string ficXsl = chemRacine + "xsd7\\style\\module.xsl";
            XmlTextReader xtr = new XmlTextReader(ficXml); // use an XmlTextReader to open an XML document
            xtr.WhitespaceHandling = WhitespaceHandling.None;
            XmlDocument xd = new XmlDocument(); // load the file into an XmlDocument
            xd.Load(xtr);
            XslTransform xslt = new XslTransform(); // load an XSLT file
            xslt.Load(ficXsl);
            MemoryStream stm = new MemoryStream(); // perform the transformation in memory
            XsltArgumentList args = new XsltArgumentList();
            xslt.Transform(xd, args, stm);
            stm.Position = 1; // and dump the results
            StreamReader sr = new StreamReader(stm, System.Text.Encoding.Default);
            ret = sr.ReadToEnd();
            sr.Close();
            xtr.Close(); // Close the reader */
            return System.DateTime.Now.ToString("HH:mm:ss") + ": " + ret;
        } catch (Exception exec) {
            return "XML KO: " + exec.ToString(); // Si il y a des erreurs, on les affiche à l'écran 
        }
    }
}
Et dans mon journal d'erreur "application", lorsqu'il plante, j'ai 1 avertissement et 2 erreurs:
Avertissement:
Code de l'événement*: 3005
Message d'événement*: Une exception non gérée s'est produite.
Heure de l'événement*: 13/12/2010 10:43:34
Heure de l'événement (UTC)*: 13/12/2010 09:43:34
ID d'événement*: 4287856719ea439db397a643a1fafa3c
Séquence d'événements*: 71
Occurrence de l'événement*: 6
Code de détail de l'événement*: 0

Informations d'application*:
Domaine d'application*: /LM/W3SVC/1/Root/SNCF-1-129367013864336630
Niveau de confiance*: Full
Chemin d'accès virtuel de l'application*: /SNCF
Chemin d'accès à l'application*: C:\Inetpub\wwwroot\SNCF\
Nom d'ordinateur*: SEI101545

Informations sur le processus*:
ID de processus*: 3788
Nom du processus*: aspnet_wp.exe
Nom du compte*: SEI101545\ASPNET

Informations sur l'exception*:
Type d'exception*: FileNotFoundException
Message d'exception*: Impossible de charger le fichier ou l'assembly 'App_Web_dmolphos, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' ou une de ses dépendances. Le fichier spécifié est introuvable.

Informations sur la demande*:
URL de la demande*: http://sei101545/SNCF/PageMembers/Se...=OBJ13/12/2010 10:43:34A+divTvSsElmt_0_0
Chemin d'accès à la demande*: /SNCF/PageMembers/Service.svc/DoWork
Adresse d'hôte de l'utilisateur*: 10.4.1.24
Utilisateur*:
Est authentifié*: False
Type d'authentification*:
Nom du compte de thread*: SEI101545\ASPNET

Informations sur le thread*:
ID de thread*: 6
Nom du compte de thread*: SEI101545\ASPNET
Emprunte une identité*: False
Trace de la pile*: à System.Reflection.Assembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, Assembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection)
à System.Reflection.Assembly.nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, Assembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection)
à System.Reflection.Assembly.InternalLoad(AssemblyName assemblyRef, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection)
à System.Reflection.Assembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection)
à System.Reflection.Assembly.Load(String assemblyString)
à System.ServiceModel.Activation.ServiceHostFactory.CreateServiceHost(String constructorString, Uri[] baseAddresses)
à System.ServiceModel.ServiceHostingEnvironment.HostingManager.CreateService(String normalizedVirtualPath)
à System.ServiceModel.ServiceHostingEnvironment.HostingManager.ActivateService(String normalizedVirtualPath)
à System.ServiceModel.ServiceHostingEnvironment.HostingManager.EnsureServiceAvailable(String normalizedVirtualPath)


Détails de l'événement personnalisé*:

Pour plus d'informations, consultez le centre Aide et support à l'adresse http://go.microsoft.com/fwlink/events.asp.
Erreur:
WebHost failed to process a request.
Sender Information: System.ServiceModel.Activation.HostedHttpRequestAsyncResult/3672011
Exception: System.ServiceModel.ServiceActivationException: Le service «*/SNCF/PageMembers/Service.svc*» ne peut pas être activé en raison d’une exception lors de la compilation. Le message de l’exception est*: Impossible de charger le fichier ou l'assembly 'App_Web_dmolphos, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' ou une de ses dépendances. Le fichier spécifié est introuvable.. ---> System.IO.FileNotFoundException: Impossible de charger le fichier ou l'assembly 'App_Web_dmolphos, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' ou une de ses dépendances. Le fichier spécifié est introuvable.
Nom du fichier*: 'App_Web_dmolphos, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null'
à System.Reflection.Assembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, Assembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection)
à System.Reflection.Assembly.nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, Assembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection)
à System.Reflection.Assembly.InternalLoad(AssemblyName assemblyRef, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection)
à System.Reflection.Assembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection)
à System.Reflection.Assembly.Load(String assemblyString)
à System.ServiceModel.Activation.ServiceHostFactory.CreateServiceHost(String constructorString, Uri[] baseAddresses)
à System.ServiceModel.ServiceHostingEnvironment.HostingManager.CreateService(String normalizedVirtualPath)
à System.ServiceModel.ServiceHostingEnvironment.HostingManager.ActivateService(String normalizedVirtualPath)
à System.ServiceModel.ServiceHostingEnvironment.HostingManager.EnsureServiceAvailable(String normalizedVirtualPath)

AVT*: le journal de liaison d'assembly est désactivé.
Pour activer le journal des échecs de liaison d'assembly, attribuez la valeur 1 à la valeur de Registre [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD).
Remarque*: une certaine perte de performance est associée à l'enregistrement dans le journal des échecs de liaison d'assembly.
Pour désactiver cette fonctionnalité, supprimez la valeur de Registre [HKLM\Software\Microsoft\Fusion!EnableLog].

--- Fin de la trace de la pile d'exception interne ---
à System.ServiceModel.AsyncResult.End[TAsyncResult](IAsyncResult result)
à System.ServiceModel.Activation.HostedHttpRequestAsyncResult.End(IAsyncResult result)
Process Name: aspnet_wp
Process ID: 3788

Pour plus d'informations, consultez le centre Aide et support à l'adresse http://go.microsoft.com/fwlink/events.asp.
Est ce que ça parle à quelqu'un ?