2009-02-25 7 views
5

Ho bisogno di distribuire un webservice come parte di un modulo DotNetNuke 4.x che sto creando, ma non sono sicuro di come posso farlo e so che rimarrà sempre nello stesso posto . Come posso aggiungere un file asmx al mio progetto di modulo e quando creo il mio file .DNN, specifichi dove finirà il webservice? Voglio fare riferimento al webservice all'interno del file ascx nel modulo usando il formato "~/webservices/webservice.asmx".Sviluppo del modulo DotNetNuke con i servizi web

DotNetNuke ha un modo per specificare nel file .DNN dove i servizi Web finiranno sul sito? E se è così, sarò ancora in grado di fare riferimento a loro con tag ancorati alla radice come ~/myservice.asmx?

risposta

5

È possibile includere il file ASMX includendo un elemento nella sezione <files>:

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

In generale, non c'è bisogno di specificare un percorso.

In alternativa, è possibile includere un file Resources.zip con il pacchetto che includerà qualsiasi file diverso da quelli che DNN deve elaborare durante l'installazione (ad esempio, Assemblies e file SqlDataProvider).

Il vantaggio di questo è manutenibilità. L'uso di Resources.zip ti impedirà di modificare il file manifest più volte ...

Il contenuto del file zip verrà semplicemente decompresso nella directory del modulo radice (ad es./DesktopModules/YourModule/*). Se esiste una struttura di file all'interno del file zip, verrà mantenuta.

Si vorrà aggiungere TheNameOfYourFile.zip al file manifest sotto l'elemento.

[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]

Per quanto riguarda il riferimento nel modulo - Io suggerisco di usare:

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

quindi se non si specifica un percorso, sarà il webservice vivere a ~/DesktopModules/MyModule/MyService.asmx? o lo metterebbe alla radice del sito di nuke in ~/MyService.asmx? –

+0

Viverebbe in "~/DesktopModules/MyModule/MyService.asmx" che può essere considerato il "livello più alto" per i file del modulo. (oltre all'assemblaggio) –

+0

Inoltre, vedere la mia modifica su come ottenere l'URL del file dal markup –