Après windows pour les nuls, voici PB pour les bons (ou presque).

Le forum (ô combien francophone) des utilisateurs de Powerbuilder.

Recherche rapide

Annonce

Certaines rubriques, dont des cours, sont uniquement visibles par les membres du forum ^^.
Dans la rubrique Liens & Références, vous avez accès à un sommaire de téléchargement, profitez-en !
Il existe maintenant un nouveau TOPIC "Votre CV en Ligne" accessible uniquement par demande.

#1 05-05-2014 13:47:34

YavaDeus  
Membre
Date d'inscription: 30-07-2012
Messages: 7
Pépites: 49
Banque: 0

Déployer un .NET webService

Bonjour,


J'ai créé un webService (.NEt 4.0) avec PowerBuilder 12.5 dont la fonction est d’acquérir des données et de les charger dans une base de données (Oracle 11g)
Il permet simplement l’acquisition d'information par plusieurs sources depuis l'extérieur, c'est ensuite une application lourde qui effectue tous les traitements.

Sur mon environnement de développement, tout fonctionne très bien.

Mais je n'arrive pas à déployer ce webService en production sur une autre machine (Qui n'a donc pas Sybase installé)
Pour déployer des applications lourdes, je n'avais jamais été embêté, une fois la liste des .dll nécessaires établies, tout allait bien.
Mais là je bloque.


J'ai essayé "Generate setup files" depuis le menu Deploy du Projet, mais ça génère un fichier d'installation auquel il semble manquer les 3/4 des fichiers.

J'ai aussi essayé avec "Deploy directly to IIS", de recopier les fichiers généré dans mon IIS vers le IIS de production. En y ajoutant dans le /bin les dll "théoriquement" utilisées. Et en paramétrant manuellement le IIS de production à l'identique de celui de mon poste.
Dans le doute, j'ai même fini par ajouter quasiments la totalité des dll et fichiers de sybase dans le /bin en supposant des dépendances.


Au final, j'arrive toujours à cette erreur :

Code:

Unverifiable code failed policy check. (Exception from HRESULT: 0x80131402) 
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.IO.FileLoadException: Unverifiable code failed policy check. (Exception from HRESULT: 0x80131402)

Source Error: 

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.  

Stack Trace: 


[FileLoadException: Unverifiable code failed policy check. (Exception from HRESULT: 0x80131402)]

[FileLoadException: Could not load file or assembly 'Sybase.PowerBuilder.Interop, Version=12.5.0.0, Culture=neutral, PublicKeyToken=598c7456a83d557a' or one of its dependencies. Unverifiable code failed policy check. (Exception from HRESULT: 0x80131402)]
   System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) +0
   System.Reflection.RuntimeAssembly.nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) +39
   System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection, Boolean suppressSecurityChecks) +132
   System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection) +144
   System.Reflection.Assembly.Load(String assemblyString) +28
   System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective) +46

[ConfigurationErrorsException: Could not load file or assembly 'Sybase.PowerBuilder.Interop, Version=12.5.0.0, Culture=neutral, PublicKeyToken=598c7456a83d557a' or one of its dependencies. Unverifiable code failed policy check. (Exception from HRESULT: 0x80131402)]
   System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective) +618
   System.Web.Configuration.CompilationSection.LoadAllAssembliesFromAppDomainBinDirectory() +209
   System.Web.Configuration.CompilationSection.LoadAssembly(AssemblyInfo ai) +130
   System.Web.Compilation.BuildManager.GetReferencedAssemblies(CompilationSection compConfig) +178
   System.Web.Compilation.BuildManager.GetPreStartInitMethodsFromReferencedAssemblies() +94
   System.Web.Compilation.BuildManager.CallPreStartInitMethods() +332
   System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnvironmentParameters hostingParameters, PolicyLevel policyLevel, Exception appDomainCreationException) +677

[HttpException (0x80004005): Could not load file or assembly 'Sybase.PowerBuilder.Interop, Version=12.5.0.0, Culture=neutral, PublicKeyToken=598c7456a83d557a' or one of its dependencies. Unverifiable code failed policy check. (Exception from HRESULT: 0x80131402)]
   System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +9088636
   System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +97
   System.Web.HttpRuntime.ProcessRequestInternal(HttpWorkerRequest wr) +258

Si j'enlève le fichier Sybase.PowerBuilder.Interop.dll
du /bin, on ne me qu'il est manquant, si je l'ajoute, j'ai cette page d'erreur.

J'ai testé sur un serveur Windows 2008 r2 et sur un Windows 2003, le comportement est identique.
(Mon poste à moi qui fonctionne est un Windows 7)


Quelqu'un a t'il déjà rencontré ce problème ?
Ou autrement, quelqu'un peut t'il m'indiquer une méthode de déploiement qui fonctionne pour un webService ?


Merci d'avance.

Dernière modification par YavaDeus (05-05-2014 13:53:02)

Hors ligne

 

#2 05-05-2014 19:24:09

Yanis  
Modérateur
Lieu: paris
Date d'inscription: 16-06-2010
Messages: 349
Pépites: 665
Banque: 150

Re: Déployer un .NET webService

Bonsoir,

    As tu déployé tout le package .net sur ton serveur de production.

    Regarde à l'adresse suivante tu y trouveras tout ce qui est nécessaire.
    <url> http://infocenter.sybase.com/help/index … JDBEAB.htm </url>

   Choisis le radio button <Powerbuilder .Net Components>



Cdt
Yanis

Hors ligne

 

#3 06-05-2014 15:37:16

Yanis  
Modérateur
Lieu: paris
Date d'inscription: 16-06-2010
Messages: 349
Pépites: 665
Banque: 150

Re: Déployer un .NET webService

Salut,

    As tu réussi en final ou as tu toujours des problèmes.

Cdt
Yanis

Hors ligne

 

#4 07-05-2014 15:37:29

YavaDeus  
Membre
Date d'inscription: 30-07-2012
Messages: 7
Pépites: 49
Banque: 0

Re: Déployer un .NET webService

J'ai essayé avec le packager pour le RunTime PowerBuild.net
J'ai cru au début que c'était bon, mais c'est très mitigé.

J'installe le RunTime puis je créé le site Web à la main en copiant les fichiers et en paramétrant IIS (je n'inclue plus de dll en plus dans le site)

J'ai essayé cette manipulation sur un serveur en 2003 R2, l'installation est réussie, et tout marche.


Mais j'ai essayé la même manipulation sur autre un serveur 2003 R2 normalement identique, et un autre en 2008 R2.
J'ai maintenant toujours cette erreur :

Code:

Impossible de charger le fichier ou l'assembly 'Sybase.PowerBuilder.Interop.dll' ou une de ses dépendances. Accès refusé. 
Description : Une exception non gérée s'est produite au moment de l'exécution de la requête Web actuelle. Contrôlez la trace de la pile pour plus d'informations sur l'erreur et son origine dans le code. 

Détails de l'exception: System.IO.FileLoadException: Impossible de charger le fichier ou l'assembly 'Sybase.PowerBuilder.Interop.dll' ou une de ses dépendances. Accès refusé.

Erreur source: 

Une exception non gérée s'est produite lors de l'exécution de la requête Web actuelle. Les informations relatives à l'origine et l'emplacement de l'exception peuvent être identifiées en utilisant la trace de la pile d'exception ci-dessous.  

Trace de la pile: 


[FileLoadException: Impossible de charger le fichier ou l'assembly 'Sybase.PowerBuilder.Interop.dll' ou une de ses dépendances. Accès refusé.]
   Sybase.PowerBuilder.Web.WebGlobal.Application_Start(Object sender, EventArgs e) +0

En déinstallant / réinstallant plusieurs fois sur ces machines, le comportement est toujours le même, mais parfois avec des variantes.
Par exemple, a un moment, le webService répondait en appel direct via IE, mais ne plantait qu'au moment de lancer une des méthodes.

Enfin c'est très flou.


--------------------------------------------------------------------------------
Informations sur la version : Version Microsoft .NET Framework :4.0.30319; Version ASP.NET :4.0.30319.1

Hors ligne

 

#5 07-05-2014 15:57:32

Yanis  
Modérateur
Lieu: paris
Date d'inscription: 16-06-2010
Messages: 349
Pépites: 665
Banque: 150

Re: Déployer un .NET webService

Salut,

    Quand tu compare tes 2 windows 2003 est ce que la configuration est rigoureusement la même. Même niveau de patch etc..
    As tu bien vu dans la doc ce qui est écrit :

You must have Microsoft Windows Installer on your system in order to run the Runtime Packager successfully. The Installer is always available on Windows XP and later.
To get more information about Windows Installer, see the
Microsoft documentation.


     As tu le runtime C++  sur tes 2 serveurs ?

cdt
Yanis

Hors ligne

 

#6 08-05-2014 03:52:25

xlat  
0xc0000005
Award: bf
Lieu: Tanger (طنج)
Date d'inscription: 04-12-2010
Messages: 704
Pépites: 11,291
Banque: 100,221,387,868,884,300
Site web

Re: Déployer un .NET webService

hello, je vois que cette fois l echec du chargement est du a un accès refusé, compare les droits de tes dll entre les deux machines...


https://lut.im/eJINqa9o/vAtyxD0h "Don't believe everything you read on the Internet"
    -- Abraham Lincoln

www.ngs.ma

Hors ligne

 

#7 13-05-2014 12:49:23

YavaDeus  
Membre
Date d'inscription: 30-07-2012
Messages: 7
Pépites: 49
Banque: 0

Re: Déployer un .NET webService

J'ai comparé les droits sur toutes les dll présentes, le registre et le path : Tout est identique.
J'ai également contrôlé les fichiers présents dans le GAC : tous identiques


Mais j'ai depuis trouvé un moyen de faire fonctionner le webService, sauf que je ne l'explique pas vraiment.

Le webService est constitué d'un site web IIS incluant une application web en ASP.NET 4.0
C'est en tout cas ce qui est généré par PowerBuilder sur mon poste et qui fonctionne.

Sur le serveur Windows 2003 qui ne fonctionnait pas, j'ai modifié le pool d'application de l'application web incluse (et pas celui du site web global, la ça n'a aucun impact) en changeant l'identité de "Service réseau" en "Systeme local"

J'ai également du ajouter les dll suivantes dans \Program Files\Sybase\Shared\PowerBuilder\
(J'ai testé aussi en les ajoutant dans le \bin du site, mais sans succès)
msvcp100.dll
msvcr100.dll
Sybase.PowerBuilder.ADO.dll
Sybase.PowerBuilder.Common.dll
Sybase.PowerBuilder.Core.dll
Sybase.PowerBuilder.DataSource.dll
Sybase.PowerBuilder.DataSource.Sharing.dll
Sybase.PowerBuilder.DataWindow.Interop.dll
Sybase.PowerBuilder.DataWindow.Web.dll
Sybase.PowerBuilder.DataWindow.Win.dll
Sybase.PowerBuilder.Db.dll
Sybase.PowerBuilder.Graph.Core.dll
Sybase.PowerBuilder.Graph.Interop.dll
Sybase.PowerBuilder.Graph.Web.dll
Sybase.PowerBuilder.Interop.dll
Sybase.PowerBuilder.LibraryManager.dll
Sybase.PowerBuilder.RTC.Interop.dll
Sybase.PowerBuilder.Utility.dll
Sybase.PowerBuilder.Web.WebService.dll
Sybase.Powerbuilder.WebService.Runtime.dll
Sybase.PowerBuilder.WebService.RuntimeRemoteLoader.dll
Sybase.PowerBuilder.WinWebDataWindowCommon.dll



Et de cette façon, le webService marche enfin correctement.

Existe t'il un moyen de faire inserer ces dll supplémentaires directement par le runtime packager ?
Parce que aller les ajouter après coup manuellement rend le déploiement du site problématique (L'objectif  étant une fois tout réglé de tout automatiser dans un installeur, il faudrait éviter de redemander plusieurs fois a l'utilisateur le chemin de "Sybase\Shared\PowerBuilder\")


Mais ce que je n'explique pas, c'est que sur mon poste, et sur l'autre serveur Windows 2003, le pool d'application est resté en "Service réseau", et je n'ai pas ajouté de dll, et le webService fonctionne pourtant bien.
C'est vraisemblablement une histoire de droits depuis le début, mais je ne sais pas lesquels et à quels niveau précisément ils différent entre mes machines.

Je doit encore vérifier la manipulation sur une machine 2008

Dernière modification par YavaDeus (13-05-2014 14:50:44)

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB 1.2.22