- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
您能否像在 ASP.NET MVC 中一样在 WCF 4.0 Rest 中执行以下操作?
在 ASP.NET MVC 中,我可以创建一个通常称为 ViewModel 的强类型对象来处理错误验证。
代替以下内容:
public ActionResult SomeAction(string firstname, string lastname, string address, int phone)
我可以有以下内容:
public ActionResult SomeAction(UserObject obj)
其中 UserObject 定义为:
public class UserObject
{
[Required(ErrorMessage = "firstname is a required paramater")]
public string firstname { get; set; }
[StringLength(50, ErrorMessage = "lastname is too long")]
public string lastname { get; set; }
[StringLength(160)]
public string address { get; set; }
public int phone { get; set; }
}
我基本上想做的是在强类型对象中创建参数,并在那里显示我的错误消息。然后我可以将错误消息格式化为 xml 并将其返回给用户。
所以在 WCF REST 中。而不是我的方法看起来像:
[WebGet]
public IEnumerable<ObjectResult> SomeAction(string firstname, string lastname, string address, int phone)
我想要以下内容:
[WebGet]
public IEnumerable<ObjectResult> SomeAction(UserObject obj)
这在 WCF REST 4.0 中可能吗?
最佳答案
默认 WCF 无法做到这一点。您必须使用 IDispatchMessageFormatter
的自定义实现创建自定义行为,以从查询字符串中收集参数并构建对象。 Here is an example 如何构建此类行为和格式化程序。这就像您必须为 ASP.NET MVC 中的每个自定义 ViewModel 编写自定义模型联编程序一样。
顺便说一句。也没有内置逻辑可以让您调用验证(如 MVC 中的 Model.IsValid
)。您将需要手动使用与数据注释一起使用的基础结构类 (System.ComponentModel.DataAnnotations.Validator
)。
关于c# WCF REST 用于参数和验证的强类型 WebGet 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7259727/
以下是我的 Contract 和 OperationContracts,我的问题是当我将 WebGet 属性用于我的服务工作正常的所有方法时,当我将 WebGet 属性删除到任何一个 Operatio
我们试图通过使用 WebGetAttribute 和 UriTemplate 来公开 REST 接口(interface),将可变数量的键值对传递给我们的服务。我们想做的: [WebGet(UriTe
写一些网络抓取的东西还很陌生,所以我很抱歉。我正在尝试减少此应用程序的运行时间。浏览大约 100 只股票的列表需要 30 多秒(为简洁起见,我只列出了 5 只股票)。有什么方法可以提高线程/异步编程的
我尝试将 2 个日期时间参数传递到我的 webget 中,但我不知道如何让它正常工作,我将在下面向您展示我的代码以及我收到的错误,也许现在有人知道这是如何工作的。 [WebGet] public IQ
我有一个使用基本 HTTP 绑定(bind)的自托管 WCF 应用程序,没有 SSL,在 .NET Framework 4.0 上的控制台应用程序中运行。 我在一个方法上有一个 WebGet 属性,该
WCF 为 ServiceContract 的 WebGet 注释中的 ResponseFormat 属性提供了两个选项。 [ServiceContract] public interface ISe
我有一个现有的 WCF Web 服务,其中在一个 .cs 文件中包含三个 WebGet 处理程序。这些处理程序对其他 .cs 文件进行适当的调用来处理该操作。 现在,我通过创建 Azure 项目并添加
您能否像在 ASP.NET MVC 中一样在 WCF 4.0 Rest 中执行以下操作? 在 ASP.NET MVC 中,我可以创建一个通常称为 ViewModel 的强类型对象来处理错误验证。 代替
This问题已经问了我在问什么,但我想对答案进行一些澄清。 答案指出 WebGet 和 WebInvoke 相似,主要区别在于 Method 参数。 但是如果Method参数设置为"GET",其实功能
我正在使用返回图像数据流的 WCF restful/http 方法。我想确保内容类型被标记为“image/png”。该方法定义为: [ServiceContract] [AspNetCompatibi
我有一个带有以下 API 的 RESTful WCF 网络服务: [WebGet(ResponseFormat = WebMessageFormat.Json)] MyResponseContract
我已经创建了一个 OData 端点(使用 Entity Framework 、WCF 数据服务) 并添加了一个自定义测试 WebGet 测试方法,如下所示: [WebGet(UriTempla
这些我都试过了 Optional Parameters in WCF Service URI Template?Posted by Kamal Rawat in Blogs | .NET 4.5 on
我正在开发一个 REST WCF 项目,当我实现以下代码时,它会提示无法解析 WebGet 类?我错过了什么? 我尝试导入 System.ServiceModel.Web 命名空间,但即使我引用了它也
嗨,我找到了 wcf REST 的示例之一,使用 WEBINVOKE 方法,如下所示 [OperationContract] [WebInvoke( BodyStyle=WebMessageBodyS
如何定义 [OperationContract] [WebGet] 方法来返回存储在字符串中的 XML,而不需要对字符串进行 HTML 编码? 应用程序正在使用 WCF 服务返回已存储为字符串的 XM
尝试在 Silverlight 的 WCF 数据服务中使用简单的服务运算符时遇到很多问题。我已通过在浏览器中进行测试来验证以下服务运营商是否正常工作: [WebGet] public IQueryab
有人可以解释这背后的原因或它是如何工作的吗?如果我在下面执行 WebInvoke,它会失败(说方法不允许,但如果我执行 WebGet,它会通过)。我只是想了解为什么? [OperationContra
我有这个特定的方法(下面的片段),我想为它获取 XML 结果。 服务器 [OperationContract] [WebGet(UriTemplate = "getcustomerschema/use
我有一个作为 Windows 服务运行的自托管 WCF 服务,使用 WebAPI 来处理 REST 内容,它运行良好。 我意识到我真的应该使用 IIS 或类似的工具来制作实际的网页,但是有什么方法可以
我是一名优秀的程序员,十分优秀!