【发布时间】:2010-09-28 02:33:43
【问题描述】:
我正在构建一个简单的 ASP.NET MVC 2.0 Web 应用程序。我想提供一个 AtomPub 端点,以便我可以从 Windows Live Writer 发布/更新内容。我最初沿着使用一组自定义 ActionResults 将 AtomPub 协议实现为控制器的路径。这一直有效,直到我尝试让身份验证工作,当我意识到让 Basic 或 Digest auth(WLW 必需)在我的基于 Forms-Auth 的 MVC 应用程序中工作时会出现问题。
所以,现在我决定将 AtomPub 逻辑移动到 MVC 应用程序中的 WCF 服务。我创建了一个名为 AtomPub.svc 的新 WCF 服务。我在 web.config 文件中添加了以下内容:
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
而且,我背后的 AtomPub.svc.cs 代码如下所示:
namespace Web
{
using System.ServiceModel;
using System.ServiceModel.Web;
[ServiceContract]
public partial class AtomPub
{
[WebGet(UriTemplate = "?test={test}")]
[OperationContract]
public string DoWork(string test)
{
return test;
}
}
}
我还添加了一个路由排除,以将此端点排除在 MVC 的路由处理之外。
现在,我完全是 WCF 的菜鸟,所以我确定我做错了很多事情。在我写这篇文章时,端点的根似乎正在工作,因为我得到了一个 AtomPub 服务页面。但是,URL 模板不起作用,我不知道该怎么做才能使其正常工作。我很想听听您的建议。
顺便说一句,我正在努力使整个实现尽可能简单。因此,我不想引入对实体框架的依赖,以便可以使用 WCF 数据服务。我也不希望将 WCF 端点移动到单独的项目中,但如果我可以轻松地将其部署到 W2k3/IIS6 环境,我愿意这样做。
【问题讨论】:
标签: asp.net-mvc wcf asp.net-mvc-2 .net-4.0