2009-10-20 8 views
3

J'ai créé un très simple Delphi 2010 service web de CGI et je suis en mesure d'obtenir exactement le même problème sur Delphi 2007.ne peut pas voir WSDL sur Delphi CGI avec IIS7

Mon interface invocable ressemble à ceci:

ISimpleTest = interface(IInvokable) 
['{4E318A9A-D361-4A18-A963-EE6D7F70E9C5}'] 
    function SayHello(const S: string; N: Integer): string; stdcall; 
end; 

Et la fonction est mise en œuvre dans une façon tout aussi simple:

function TSimpleTest.SayHello(const S: string; N: Integer): string; 
begin 
    Result := 'Hello ' + S + ', all ' + IntToStr(N) + ' of you'; 
end; 

J'ai copié le résultat SimplecGI.exe à notre Windows server 2008 serveur exécutant IIS7. J'ai créé mon dossier virtuel, configuré des permissions d'exécution, autorisé des modules CGI non spécifiés, activé des applications 32 bits et enfin pu voir la page d'information de service depuis mon navigateur en utilisant une URL comme celle-ci: http://myserver:8001/SimpleCGI/SimpleCGI.exe

Les étapes de configuration sont différentes à partir de IIS6 mais la page d'informations sur le service semble identique sur les deux versions IIS. Il a également des liens pour le WSDL pour ISimpleTest, tout comme il l'a fait sur IIS6. Mais sur IIS6, en cliquant sur ce lien (une URL comme ceci: http://myserver/SimpleCGI/SimpleCGI.exe/wsdl/ISimpleTest) montre le WSDL attendu dans le navigateur. Toutefois, dans IIS7, le fait de cliquer sur ce même lien affiche à nouveau la page d'informations sur le service. Il en va de même pour le lien WSDL pour IWSDLPublish et le lien WSIL (http://myserver:8001/SimpleCGI/SimpleCGI.exe/inspection.wsil).

Quiconque a déjà vu ça? Quelqu'un l'a-t-il résolu avant?

Répondre

6

OK, a trouvé la réponse ici: http://forums.iis.net/p/1100323/1745984.aspx

Les paramètres de sécurité par défaut sur IIS7 supprimer les informations de chemin de l'URL pour les applications CGI. Pour le contourner (et permettre au service Web de fonctionner), ajoutez ce qui suit dans un fichier web.config situé dans le même dossier que votre exécutable:

<configuration> 
    <system.webServer> 
    <handlers> 
     <add name="ScriptMap1" path="SimpleCGI.exe" verb="*" modules="CgiModule" scriptProcessor="E:\Mypath\SimpleCGI.exe" resourceType="File" allowPathInfo="true" /> 
    </handlers> 
    </system.webServer> 
</configuration> 
<configuration> 
    <system.webServer> 
    <handlers> 
     <add name="ScriptMap1" path="SimpleCGI.exe" verb="*" modules="CgiModule" scriptProcessor="E:\Mypath\SimpleCGI.exe" resourceType="File" allowPathInfo="true" /> 
    </handlers> 
    </system.webServer> 
</configuration> 
Questions connexes