2009-06-18 6 views
1

Est-il possible d'appeler un service Web à partir d'un bloc de code en ligne dans ASP.NET sans ajouter de référence Web? Si oui, pouvez-vous donner des instructions?Appelez le service Web dans le bloc de code en ligne asp.net

+0

Pourquoi cela serait-il différent d'appeler le service de codebehind? L'avez-vous essayé et avez-vous un problème? Si oui, modifiez peut-être votre question pour dire quel problème vous avez eu. –

+0

Je ne sais pas comment le faire sans ajouter de référence Web. –

+0

Et pourquoi ne pas ajouter une référence Web? Quel est le problème? –

Répondre

1

Ajouter une référence Web dans un autre projet C# (par exemple une application console). Ensuite, passez à "afficher tous les fichiers". Vous trouverez un fichier .cs caché qui contient le proxy de service Web réel qui a été créé pour vous. (Il existe également un outil de ligne de commande qui fait la même chose, mais j'ai oublié le nom)

Vous pouvez copier la classe générée vers votre fichier .aspx dans un bloc <script runat="server">. Bien que je ne sais pas ce que vous auriez réellement besoin pour cela;) Vous n'avez pas accès au code source de l'application Web?

Une autre solution consiste à créer une DLL .NET pour le proxy Web, puis charger cet assembly dynamiquement en utilisant Assembly.Load(). Invoquer des méthodes de façon dynamique n'est pas très joli.

+0

-1 pour suggérer toute manipulation d'un fichier généré, y compris la copie. –

+0

Sa méthode était un raccourci pour exécuter l'outil de ligne de commande, ce que j'ai vraiment fait. C'était la solution, et c'était la seule façon de le faire avec les exigences que j'avais. –

1

En général le code en ligne peut faire tout ce que le code derrière le code peut faire, le code derrière le code est juste plus propre et sépare les fichiers.

Vous devez d'abord inclure les espaces de noms appropriés qui ont été générés pour vous lorsque vous avez créé le proxy WebService.

L'espace de noms incluent le code est un peu différent dans le cas du code en ligne, voici un exemple

<%@ Import Namespace="System.IO" %> 

Si vous souhaitez en savoir plus sur les différences de codage d'horreur a un great article sujet

0

Si vous avez le fichier de code du service Web (* .cs) dans votre dossier App_Code, vous n'aurez besoin d'aucune référence, utilisation, etc. Toutefois, si le service Web n'est pas local dans votre projet ou si vous avez pas le code dans un fichier .cs distinct dans le dossier App_Code, vous aurez besoin d'une référence Web.

qui est de mon expérience, et je viens d'utiliser l'une de ma méthode de Web de Service Web en tant que tel:

<%= new MyWebService().MyWebMethod(); %> 

Hope it helps.

Questions connexes