2010-04-22 7 views
2

J'essaie d'apporter des améliorations à une application Web de production. Après un peu de tests unitaires sur mon Windows XP IIS 5.1 machine de développement, tout fonctionne sur mon localhost si je la boîte de dialogue Visual Studio 2008 PUBLIER sur mon Dev PC pour pousser les projets suivants à un serveur de mise en scène:La requête System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse a échoué avec le statut HTTP 404

  • la application web principale
  • la "primaire" webservice (la page d'accueil essaie d'invoquer cette WS)
  • un webservice "secondaire" (pas encore un problème parce que la page d'accueil n'appelle pas WS)

J'ai le suivant g lorsque je tente de parcourir la page d'accueil de l'application Web en tapant ceci dans mon navigateur: myUglyURL

Server Error in '/zVersion2' Application. 
The request failed with HTTP status 404: Not Found. 
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.Net.WebException: The request failed with HTTP status 404: Not Found. 

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: 

[WebException: The request failed with HTTP status 404: Not Found.] 
System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage message, WebResponse response, Stream responseStream, Boolean asyncCall) +431289 
System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters) +204 
ProxyZipeeeService.WSZipeee.Zipeee.GetMessageByType(Int32 iMsgType) in C:\Documents and Settings\johna\My Documents\Visual Studio 2008\Projects\ProxyZipeeeService\ProxyZipeeeService\Web References\WSZipeee\Reference.vb:2168 
Zipeee.frmZipeee.LoadMessage() in C:\Documents and Settings\johna\My Documents\Visual Studio 2008\Projects\Zipeee\frmZipeee.aspx.vb:43 
Zipeee.frmZipeee.Page_Load(Object sender, EventArgs e) in C:\Documents and Settings\johna\My Documents\Visual Studio 2008\Projects\Zipeee\frmZipeee.aspx.vb:33 
System.Web.UI.Control.OnLoad(EventArgs e) +99 
System.Web.UI.Control.LoadRecursive() +50 
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +627 

Informations sur la version: Microsoft .NET Framework Version: 2.0.50727.3607; ASP.NET Version: 2.0.50727.3082

Voici un peu de code source correspondant:

Public wsZipeee As New ProxyZipeeeService.WSZipeee.Zipeee 
Dim dsStandardMsg As DataSet 
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 
    If Not Page.IsPostBack Then 
     LoadMessage() 
    End If 
End Sub 

Private Sub LoadMessage() 
    Dim iCnt As Integer 
    Dim iValue As Integer 

    dsStandardMsg = wsZipeee.GetMessageByType(BizConstants.MsgType.Standard) 
End Sub 

Je pense que je peux avoir configuré les choses correctement sur le serveur de mise en scène. Le serveur de transfert est Win Server 2003 ServicePack 2 exécutant IIS 6.0. Lorsque j'ai publié le site principal et les deux services Web sur le serveur de transfert appelé MOJITO, j'ai créé les répertoires physiques pour chacun sur le lecteur D. Ensuite, en utilisant INETMGR, j'ai configuré les répertoires virtuels suivants:

  • zVersion2
  • zVersion2wsSQL
  • zVersion2wsEmergency

Toutes ces sont configurés pour utiliser une nouvelle configuration pool d'applications I et nommé zVersion2aspNet20. Le site Web par défaut pour cette machine MOJITO est configuré pour utiliser ASP.NET 1.1 et l'adresse IP est définie sur (tous non affectés). Les versions de production de ces deux derniers services web s'exécutent sur la machine MOJITO (respectivement ZipeeeService et EmergencyService).

Peut mes versions de mise en scène des webservices (ci-dessus nommés zVersion2wsSQL et zVersion2wsEmergency respectivement) coexistent sur le même serveur Web avec la même adresse IP?

S'il vous plaît noter que lorsque je teste le webservice zVersion2wsSQL indépendamment (de INETMGR droit de la souris et cliquez sur Parcourir) fonctionne comme prévu (c.-à présenter toutes les méthodes de webservice) comme cet extrait:

  • GetMessageByType MessageName = « Get_x0020_Message_x0020_By_x0020_Type »

je peux tester cette webmethod en cliquant dessus et il présente la boîte de dialogue de test (car il faut un simple, et je datatype invoquait sur localhost (c.-à-MOJITO):

**Get Message By Type** 

**Test** 
To test the operation using the HTTP POST protocol, click the 'Invoke' button. 
Parameter Value 
iMsgType: _______     [INVOKE button] 

SOAP 1.1 ....etc. 

je crains peut-être glosé avec trop d'informations, donc je vais arrêter mais j'espère que quelqu'un peut me aider comme je ne peux pas comprendre pourquoi cette demande aboutit à une « not found ». Merci.

Répondre

4

Il y a beaucoup d'endroits où le "nom" que vous donnez quelque chose se traduit par quelque chose d'assez insondable (du moins pour moi) quand vous devez CHANGER le nom. Ici, j'ai eu 2 webservices et un site principal et quand j'ai PUBLIÉ le webservice (s) à un serveur de transfert, j'ai pris soin de les mettre dans leur propre répertoire physique. Ce serveur de transfert héberge les versions de production des deux services Web. J'ai donc rencontré des problèmes lorsque j'ai créé les répertoires virtuels pour les versions intermédiaires des services Web.

Autrement dit, je les ai créés avec des noms distincts des versions de production (par exemple SomeWebSvcVersion2 vs. SomeWebSvc). Ensuite, sur le serveur de stockage en utilisant INETMGR, je pourrais parcourir ces "sites" et la page "test" s'affichera comme prévu permettant l'INVOKE de webmethods avec des types de données simples pour les paramètres d'entrée.

J'ai découvert que ces noms "arbitraires" pour les répertoires virtuels ne sont pas OK. Ils doivent correspondre aux noms dans App.Config pour mes classes proxy qui enveloppent chaque service Web. Ainsi, dans le cas de l'erreur ci-dessus, la App.Config contenait:

<applicationSettings> 
    <ProxyZipeeeService.My.MySettings> 
     <setting name="ProxyZipeeeService_WSZipeee_Zipeee" serializeAs="String"> 
      <value>http://localhost/ZipeeeWebService/Zipeee.asmx</value> 
     </setting> 
    </ProxyZipeeeService.My.MySettings> 
</applicationSettings> 

Le fichier Reference.vb compilé dans mon dll proxyclass nécessite un répertoire virtuel sur le serveur de mise en scène et appelé ZipeeeWebService mes tentatives pour configurer la nouvelle version publié sur le serveur de transfert avec un nom de répertoire virtuel différent était erroné.

J'espère que ces notes peuvent être utiles à quelqu'un. Affaire classée.

+0

Oui, ils étaient utiles, merci. Les répertoires virtuels sont une vraie douleur = / – Francisco

Questions connexes