2010-04-13 5 views
0

Je suis complètement nouveau dans les services Web et je ne peux pas faire fonctionner le mien.Échec du service Web lorsqu'il est installé dans un projet distinct à partir du site Web

Ma configuration est sur VS 2008 en utilisant IIS. J'ai un fichier de solution avec 3 projets dedans: site Web, code, et services.

Si je mets mon webservice dans mon site Web et l'appelle localement alors cela fonctionnera bien (c'est juste un service web hello world). Je veux mettre le service dans un endroit différent pour une utilisation à partir de plusieurs sites.

Je ne sais pas ce que je fais mal - je l'ai lu tant d'informations contradictoires concernant les fichiers disco, fichiers d'accès, silverlight, flash, java, etc.

Je recherche juste pour les étapes rapides et simples pour créer un service Web auquel je peux accéder depuis javascript et déployer sur un site Web distinct. L'objectif final est d'avoir des fonctionnalités dans les webservices pour que le site web appelle via JS et fonctionne beaucoup mieux dans le temps de chargement et les appels asynchrones.

  • Ai-je besoin de créer un fichier disco?
  • Ai-je besoin de configurer la sécurité? - Je sais que c'est le mieux, je cherche juste à le faire fonctionner du tout. Dois-je autoriser l'accès croisé sur IIS ou sur mon serveur hébergé?
  • Existe-t-il des sites Web de référence rapide que vous pouvez recommander?
  • Devrais-je utiliser WCF comme nouvelle technologie? - J'ai vu cela sur MSDN mais semble être plus pour les applications Windows que pour les applications web.

Je ne reçois aucun code d'erreur spécifique. J'ai installé les outils de débogage firefox (firebug) et je peux voir quels sont les en-têtes mais je ne sais pas comment les interpréter et il n'y a pas de réponse qui soit repassée.

Toute aide est appréciée !!!

+0

Vous pouvez essayer le service Web de base « Bonjour, monde » créé lorsque vous venez de créer un service. Vous pourriez alors nous dire étape par étape ce que vous avez fait. En fait, vous pourriez vouloir dire si vous utilisiez les services WCF ou ASMX. –

+0

Je déteste demander ce qui est probablement une question simple ...J'essaye d'employer le service Web d'asmx (c'est pourquoi je me demande si wcf est une meilleure manière d'aller) et j'utilise juste le service par défaut bonjour mondial comme mentionné ci-dessus. Je peux le faire fonctionner correctement dans le même projet. Je peux même faire le code dans un assembly tant que le fichier asmx est dans le même projet. Je n'arrive pas à comprendre comment déployer le projet asmx sur un serveur Web ou sur un autre répertoire IIS sur le même ordinateur. Je reçois des erreurs avec le code de 0 et aucune information. Je peux naviguer manuellement vers le fichier asmx mais je ne peux pas l'appeler par le code. – Adam

Répondre

1

Lorsque votre JS appelle votre webservice, la deux doivent être sur le même nom d'hôte - il s'agit d'une restriction de la politique d'origine identique de votre navigateur. Par exemple, si votre service Web est au http://ws.domain.com/report.asmx et que votre page est à http://domain.com/index.aspx, un appel ajax direct ne sera pas autorisé.

Vous pouvez contourner cela de plusieurs façons. Une méthode courante est appelée JSON-P, qui consiste à renvoyer le résultat ws en tant que fonction js, puis à appeler le ws en tant que script.

http://en.wikipedia.org/wiki/JSON#JSONP

+0

Je vais regarder dans ce - merci! J'ai trouvé quelques informations en ligne sur les fichiers de politiques d'accès croisés (pour Silverlight et Flash principalement). Savez-vous si cela pourrait être utilisé? J'ai essayé de les utiliser un peu, mais je ne sais pas si je le fais mal ou ils ne sont pas faits pour ça. – Adam

0

Vous pouvez utiliser le bouton droit de la souris sur le projet VS -> Publier pour copier tous les fichiers pertinents dans un dossier. Vous devez créer une application Web dans IIS et la configurer pour votre WebService. Si vous ne recevez pas les messages d'erreur utiles, essayez de définir

<configuration> 
    <system.web> 
    <customErrors mode="Off" /> 
    </system.web> 
</configuration> 

J'espère que cela aide, mais votre description de l'erreur est un peu vague ...

+0

Merci! Désolé pour le message d'erreur vague - je n'en reçois pas un à vous transmettre. Cela étant le problème - serais-je toujours en mesure de naviguer vers le service? Je ne reçois pas d'erreurs quand je vais à http: //website/service.asmx mais je reçois juste la mauvaise réponse quand j'essaye de l'appeler avec JS. Et, je sais que c'est probablement une vraie question bête - comment puis-je créer une * application * dans IIS 5? C'est sur ma machine XP locale, mais tout ce que j'ai trouvé en ligne est à faire avec IIS 6/7. Connaissez-vous de bonnes ressources en ligne? – Adam

+0

Salut, le site/service.asmx "travail" ne signifie pas, le webservice fonctionne. Seulement si vous pouvez tester vos méthodes via la page website/service.asmx vous pouvez être sûr (ou construire une application Windows rapide, qui utilise le webservice). Mais vous avez raison, cela ressemble beaucoup au problème qui existe entre le JS et le service. Désolé, je ne peux pas vous aider avec IIS 5 ... bonne chance de toute façon – Hinek

Questions connexes