使用webservices进行DotNetNuke模块开发

时间:2009-02-25 20:16:05

标签: asp.net web-services dotnetnuke module-packaging

我需要部署一个web服务作为我正在创建的DotNetNuke 4.x模块的一部分 - 但我不知道如何做到这一点并且知道它将始终保持在同一个地方。如何将asmx文件添加到我的模块项目中,当我创建.DNN文件时,指定webservice最终会在哪里?我想使用“〜/ webservices / webservice.asmx”格式从模块中的ascx文件中引用webservice。

DotNetNuke是否有办法在.DNN文件中指定Web服务最终会在网站上?如果是这样,我仍然可以用〜/ myservice.asmx这样的根锚标签来引用它们吗?

1 个答案:

答案 0 :(得分:5)

您可以通过在<files>部分中添加元素来包含ASMX文件:

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

通常,您无需指定路径。

或者,您可以在包中包含一个Resources.zip文件,该文件将包含除安装期间DNN需要处理的文件以外的任何文件(例如,Assemblies和SqlDataProvider文件)。

这样做的好处是可维护性。使用Resources.zip将使您不必一遍又一遍地编辑清单文件......

zip文件的内容将简单地解压缩到根模块目录中(例如/ DesktopModules / YourModule / *)。如果您的zip文件中有文件结构,它将被维护。

您需要将TheNameOfYourFile.zip添加到元素下的清单文件中。

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

至于在你的模块中引用它 - 我建议使用:

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