web-dev-qa-db-fra.com

Erreur de l'analyseur: impossible de créer le type

J'ai créé un webservice et l'ai publié sur une machine locale. Ensuite, je l'ai téléchargé sur le serveur.

Maintenant, pendant que j'essayais d'accéder au webservice, cela donne l'erreur suivante:

Parser Error Message: Could not create type 'webservice.myservice'

Source Error: Line 1: <%@ WebService Language="C#" CodeBehind="myservice.asmx.cs" Class="webservice.myservice" %>

J'ai essayé This link mais impossible de résoudre mon problème.

Que devrais-je faire?

34
Meghan

Je ne sais pas si cela traîne quelque chose du passé sombre et lointain .. mais j'ai eu ce problème .. l'a résolu .. donc j'ai pensé que je partagerais

Lorsque vous créez un service Web dans Visual Studio (j'utilise 2010 mais j'imagine que c'est la même chose pour les autres), il crée un fichier appelé Service1.asmx

Vous serez tenté de le renommer en MyService.asmx (ou peu importe)

Ensuite, vous regarderez à l'intérieur et verrez la ligne

public class Service1: System.Web.Services.WebService

que vous changerez en

public class MyService: System.Web.Services.WebService

puis lorsque vous essayez de l'exécuter, vous obtenez l'erreur

Impossible de créer le type 'MyProject.MyService'

car il pense toujours que la classe s'appelle Service1 ..

si vous faites un clic droit sur le .asmx fichier et sélectionnez le balisage de vue, vous verrez qu'il dit toujours

<%@ WebService Language="C#" CodeBehind="MyService.asmx.cs" Class="MyProject.Service1" %>

le changer en

<%@ WebService Language="C#" CodeBehind="MyService.asmx.cs" Class="MyProject.MyService" %>

enregistrez-le .. essayez-le ..

travaillé pour moi ..

50
JohnW

J'ai eu le même problème et je l'ai cherché longtemps!

J'ai essayé beaucoup de choses, notamment les suivantes:

Aucun de ceux-là ne travaillait pour moi. Après quelques recherches, tests et jurons, j'ai finalement trouvé le problème: L'application (webservice) n'était pas correctement hébergée.

Permettez-moi d'expliquer avec un peu de contexte:

J'avais un projet contenant deux solutions: une solution était le site web que j'avais réalisé (html, javascript, etc.), l'autre solution contenait un dossier avec la logique métier, le modèle de base de données et les webservices. Évidemment, le dossier webservices contenait mes fichiers .asmx et le code-behind pour eux.

  • Projet
    • Data Core
      • Modèle de base de données
      • Logique d'entreprise
      • Services Web
        • myWebservice.asmx
    • Site Internet

Je les hébergeais de la manière suivante:

  • Mon site Web a été hébergé en tant que nouveau site avec le dossier de site Web en tant que dossier racine
  • Mes webservices que j'hébergeais en tant qu'application sur mon site web, avec le dossier webservices en root

Plus visuellement:

  • IIS 7
    • Mon site Web => pointant vers le dossier "Site Web"
      • Application Webservices => Pointant vers le dossier "Webservices" du Data Core

Cela a entraîné l'URL suivante " http: //website/webservices/myWebservice.asmx ", qui m'a donné l'erreur "Impossible de créer le type".

Maintenant, après avoir joué un peu, j'ai essayé d'héberger mon application de service Web en commençant par le noyau de données en tant que root, au lieu du dossier Webservice.

Visuellement:

  • IIS 7
    • Mon site Web => pointant vers le dossier "Site Web"
      • Application Webservices => Pointant vers le dossier "Data Core".

Évidemment, utiliser la même URL que précédemment me donnerait une erreur "Fichier introuvable". Cependant, en utilisant l'url suivante " http: //website/webservices/webservices/myWebservice.asmx ", j'ai finalement réussi à faire fonctionner mon page des services web!

Une petite panne d'URL:

  • http: // site Web/=> Mon site Web à partir du dossier "Site Web"
    • webservices/=> Equivalent au dossier "Data Core"
      • webservices/=> Le dossier "webservices" dans le dossier "Data Core"
        • myWebservice.asmx => Le fichier webservice dans le dossier "webservices", dans le dossier "Data Core"

Je suppose que parce que j'hébergeais mes webservices directement depuis le dossier "webservices" dans le Data Core, le serveur n'a pas pu trouver le DLL DLL des webservices compilé (qui réside dans le "bin") dossier), puisque j'hébergeais à un niveau plus profond.

Après avoir modifié la configuration et hébergé les services Web à partir du dossier "Data Core", le serveur IIS pourrait "voir" le dossier bin et héberger les services Web avec succès. Lorsque vous utilisez l'URL correcte qui est ^ _ ^

J'espère que cela est clair et vous aide à résoudre vos problèmes!

8
Glenn

Une autre chose qui peut causer le problème. Ne crée pas d'application pour le projet, lancez le IIS lui-même.

Démarrer -> Rechercher IIS

Ouvrez-le !!

Cliquez avec le bouton droit sur le site Web par défaut ou le site Web sur lequel vous prévoyez de publier le service.

Ajouter une application ... Entrez un alias ex. "MyWebService" ... Choisissez le chemin physique. dans mon cas était C:\inetpub\wwwroot\MyWebService qui est le chemin par défaut de mon site Web.

Ensuite, lorsque vous publiez, jetez Visual Studio, choisissez ce dossier. ou copiez-y simplement vos fichiers de code.

5
hasan

J'avais ce problème ce matin et Google m'a atterri ici, mais aucune de ces réponses n'a fonctionné pour moi. Mais j'ai compris ce qui n'allait pas - du moins dans mon cas - alors j'ai pensé le partager au cas où cela aiderait les autres.

J'avais un service Web qui fonctionnait bien depuis des mois dans une solution avec d'autres parties de l'application sur laquelle je travaillais. Hier, j'avais besoin de corriger quelque chose dans une branche de publication, j'ai donc ouvert Visual Studio sur une copie de la solution dans un autre répertoire. Visual Studio a décidé d'être utile et de remapper silencieusement tous mes répertoires virtuels dans IIS à l'endroit où les programmes seraient dans le dossier de publication (si j'avais pris la peine de les construire, ce que je n'avais pas)). Maintenant, quand j'ai essayé de frapper mon service Web, IIS pointait vers la version finale qui avait le dossier asmx mais pas de dossier bin.

Ouvrir l'onglet des propriétés Web dans ma solution de développement et cliquer sur Créer un répertoire virtuel l'a remappé à la version de développement et tout allait bien à nouveau avec le monde.

0
dwilliss

Je suis assez certain que ce n'est qu'un résumé de ce que Glenn a dit, mais j'ai rencontré ce problème parce que mon application a été créée à partir du répertoire un niveau trop haut dans la structure du répertoire.

Par exemple, mon service Web se trouvait dans SiteProject_1/SiteProject_2/service.asmx

À l'origine, SiteProject_1 était ce que j'avais converti en application dans IIS. J'ai pu résoudre le problème en supprimant cette application dans IIS et en faisant plutôt SiteProject_2 dans l'application.

0
Scott