9

是否可以使用 ASP.NET 2.0 创建 REST Web 服务?我发现的文章和博客条目似乎都表明需要带有 WCF 的 ASP.NET 3.5 才能使用 ASP.NET 创建 REST Web 服务。

如果可以在 ASP.NET 2.0 中创建 REST Web 服务,您能否提供一个示例。

谢谢!

4

8 回答 8

5

我实际上已经用 asp.net 2.0 创建了一个 REST Web 服务。它实际上与创建网页没有什么不同。

当我这样做时,我真的没有太多时间研究如何使用 asmx 文件来做,所以我在一个标准的 aspx 文件中做。我知道这样做会带来额外的开销,但作为第一次修订它很好。

protected void PageLoad(object sender, EventArgs e)
{
    using (XmlWriter xm = XmlWriter.Create(Response.OutputStream, GetXmlSettings()))
    {
        //do your stuff
        xm.Flush();
    }
}

    /// <summary>
    /// Create Xml Settings object to properly format the output of the xml doc.
    /// </summary>
    private static XmlWriterSettings GetXmlSettings()
    {
        XmlWriterSettings xmlSettings = new XmlWriterSettings();
        xmlSettings.Indent = true;
        xmlSettings.IndentChars = " ";
        return xmlSettings;
    }

这应该足以让您入门,我稍后会尝试发布更多内容。

此外,如果您需要对 Web 服务进行基本身份验证,则可以完成,但如果您不使用活动目录,则需要手动完成。

于 2008-09-02T21:28:51.853 回答
2

使用 ASP.NET 创建 RESTful Web 服务绝对是可能的。如果您正在开始一个新项目,我肯定会考虑使用 WCF 创建 RESTful Web 服务。3.5 .NET Framework 允许您指定 RESTful 端点以及常规的旧 SOAP 端点,并且仍然提供相同的服务。

您真正需要做的就是启用调用的端点行为<webHttp />

这是一个关于使用 WCF 创建 RESTful Web 服务的好系列:

http://blogs.msdn.com/bags/archive/2008/08/05/rest-in-wcf-blog-series-index.aspx

于 2008-09-03T03:52:48.247 回答
1

例如,您当然可以在 ASP.NET 2.0 中创建 RESTful Web 服务,但是没有像 .NET 3.5 中的 WCF 那样为您完成所有工作的高级 API。

于 2008-09-02T21:28:39.247 回答
1

好吧,当然你总是可以自己实现规范。只是没有内置的支持它。如果您使用 Nathan Lee 的解决方案,请将其作为 http 处理程序 (.ashx) 而不是 aspx。您可以将他的代码复制/粘贴到新的处理程序文件中。

于 2008-09-02T21:30:47.010 回答
1

通过使用 IHTTPHandlers 实现规范,您可以轻松地实现 RESTful Web 服务。

于 2008-09-02T21:41:15.443 回答
1

还可以使用 ASP.Net MVC 查看。我在我的博客上写了一些关于此的文章:

http://shouldersofgiants.co.uk/Blog/

查找我的使用 ASP.Net MVC 系列创建 RESTful Web 服务

于 2009-10-09T19:49:05.297 回答
0

我才刚刚开始使用它们,但从我所看到的 2.0 漂亮地假定 SOAP。

于 2008-09-02T21:19:22.390 回答
0

您可以使用创建 RESTful 服务

1) WCF REST 服务 2) ASP.NET Web API

如果您都关心 RESTful 服务,那么您应该使用 ASP.NET Web api。但是如果您需要同时支持 SOAP Web 服务和 RESTful 的服务,那么 WCF REST 将是一个不错的选择。

有一些文章讨论了一个与另一个。这篇文章可能会有所帮助。

于 2012-06-28T17:36:04.510 回答