2009-02-25 6 views
5

Je dois déployer un service web dans le cadre d'un module DotNetNuke 4.x que je crée - mais je ne suis pas sûr de savoir comment je peux le faire et je sais qu'il restera toujours au même endroit . Comment puis-je ajouter un fichier asmx à mon projet de module, et quand je crée mon fichier .DNN, spécifier où se terminera le webservice? Je veux référencer le webservice depuis le fichier ascx dans le module en utilisant le format "~/webservices/webservice.asmx".Développement de modules DotNetNuke avec webservices

Est-ce que DotNetNuke a un moyen de spécifier dans le fichier .DNN où les services web finiront sur le site? Et si oui, serai-je toujours capable de les référencer avec des balises ancrées à la racine comme ~/myservice.asmx?

Répondre

5

Vous pouvez inclure le fichier ASMX en incluant un élément dans la section <files>:

<files> 
<file> 
    <name>YourWebService.asmx</name> 
    <path></path> 
</file> 
</files> 

En général, vous n'avez pas besoin de spécifier un chemin. Vous pouvez également inclure un fichier Resources.zip avec votre package, qui inclura tous les fichiers autres que ceux que DNN doit traiter lors de l'installation (par exemple, les fichiers Assemblies et SqlDataProvider).

L'avantage de ceci est maintenabilité. L'utilisation de Resources.zip vous évitera d'avoir à éditer le fichier manifeste encore et encore ...

Le contenu du fichier zip sera simplement décompressé dans le répertoire du module racine (par exemple/DesktopModules/YourModule/*). S'il y a une structure de fichier dans votre fichier zip, elle sera conservée.

Vous devez ajouter TheNameOfYourFile.zip à votre fichier manifeste sous l'élément.

[snip]

<folder> 
    <name>Your Module</name> 
    <friendlyname>Your Module</friendlyname> 
    <foldername>YourModule</foldername> 
    <modulename>YourModule</modulename> 
    <description>A module for DotNetNuke websites.</description> 
    <version>01.00.00</version> 
    <resourcefile>Resources.zip</resourcefile> 
    <businesscontrollerclass></businesscontrollerclass> 
    <modules> 
    <module> 

[/snip]

En ce qui concerne le référencement dans votre module - Je suggère d'utiliser:

<%=ResolveUrl("~/DesktopModules/YourModule/Services.asmx")%> 
+0

donc si je ne spécifie pas un chemin, va vivre le webservice à ~/DesktopModules/MyModule/MyService.asmx? ou serait-ce à la racine du site nucléaire à ~/MyService.asmx? –

+0

Il vivrait à "~/DesktopModules/MyModule/MyService.asmx" qui peut être considéré comme le "niveau supérieur" pour les fichiers du module. (En dehors de l'assemblage) –

+0

En outre, voir ma modification concernant l'obtention de l'URL du fichier à partir du balisage –