在ASP.NET / DotNetNuke中公开JSON服务的最简单方法

时间:2012-01-13 17:51:34

标签: c# asp.net .net ajax dotnetnuke

我需要为jQuery token input field control创建支持服务。

我们的应用程序包含一个名为SimpleWrapper的(第三方)DotNetNuke模块的控件。这个模块的工作方式是它提供了一种轻量级但不是非常灵活的方式,可以在DNN页面上显示常规的ASP.NET用户控件。需要注意的是这些是.ascx个控件,而不是.aspx个页面。

我几乎不知道可以使用哪种技术。我查看了ASMX服务,但这些服务似乎主要用于生成生成的JavaScript代理代码。我需要能够:

  • 将服务挂载到静态URL
  • 让它接受单个字符串参数
  • 让它以特定但非常简单的格式生成JSON

我真的不需要与ASP.NET强大的集成,比如能够响应回发或其他类似的东西。我还喜欢通过添加文件来部署可以部署的东西,而无需编辑配置文件。在这样的环境中吐出一大块JSON会是一种直接的方法吗?

3 个答案:

答案 0 :(得分:2)

WCF(我认为从版本3.51开始)有一个很好的“零配置”功能,可以轻松地与IIS集成。你所要做的就是

  • 创建一个JSON感知界面&服务
  • 在IIS站点中创建一个简单的.SVC文件。

你不需要搞乱时髦的.config文件: - )

示例.SVC文件:

<%@ ServiceHost
 Service="MyNamespace.MyService"
 Factory="System.ServiceModel.Activation.WebServiceHostFactory" %>

示例界面&amp;服务实现,如下所示:

public class MyService : IMyService
{
        public string Test(string text)
        {
            return text; // whatever
        }

}

[ServiceContractAttribute(Namespace="http://schemas.myservice.com")]
public interface IMyService
{
    [OperationContractAttribute]
    [WebInvokeAttribute(UriTemplate="Test", // change this accordingly
     ResponseFormat=WebMessageFormat.Json, // change this accordingly
     RequestFormat=WebMessageFormat.Json, // change this accordingly
     BodyStyle=Wrapped)]
    string Test(string text);
}

以下是关于所有这些内容的额外酷链接:WCF Web Services The Easy Way

答案 1 :(得分:1)

JSON Exposed thru Restful Service 本链接将指导您逐步完成我认为您正在寻找的实际代码示例

答案 2 :(得分:1)

我不明白为什么WCF Web服务或ASMX Web服务不适合您所说的内容。就个人而言,这就是我的方式(选择WCF而不是ASMX)。

我查看了DJ KRAZE发布的链接,它使用了HTTP Handler plus并使用了一些第三方Javascript序列化程序(因为你需要JavascriptSerializer,所以不需要一个额外的依赖项。)