我想在ASP.Net Web API中创建一个自定义模型绑定器.有关如何从头开始执行此操作的大量资源,但我想利用现有功能.
我在codeplex中查看了源代码,可以在那里看到大量的模型绑定器,但大多数是密封的......即使这样,我也无法确定在哪种情况下使用哪一个.
这是我的api方法标题:
public async Task<HttpResponseMessage> Post(long appId, [FromBody]Field field)
Run Code Online (Sandbox Code Playgroud)
我想要做的是基本上在填充所有基本属性后拦截模型绑定器,然后根据我将在客户端设置的http请求标头设置一些额外的值.
正如我所说,我很乐意创建自定义模型绑定器和模型绑定器并将它们连接起来,我遇到问题的是试图重用现有的功能.
谢谢,皮特
有什么问题?
我正在尝试在我的ASP.net web api应用程序中启用修补程序.我正在使用代码第一实体框架.
我有以下方法标题,我可以设置一个断点,它将命中:
[AcceptVerbs("PATCH")]
public async Task<HttpResponseMessage> Patch(long appId, long id, Delta<SimpleFormGroup> formGroup)
Run Code Online (Sandbox Code Playgroud)
但是,当我调用formGroup.Patch(实体)时,不会对我的实体进行任何更改.如果我将以下内容放入即时窗口:
formGroup.GetChangedPropertyNames()
Run Code Online (Sandbox Code Playgroud)
然后这个集合是空的,这似乎是错误的.
我试过了什么?
我一直在提到以下例子
http://techbrij.com/http-patch-request-asp-net-webapi http://www.strathweb.com/2013/01/easy-asp-net-web-api-resource-updates-with-delta /
Json MediaType Formatter似乎不知道如何正确构建Delta对象,但是在第二个链接中,filip似乎表明它应该在没有oDataMediaTypeFormatter的情况下工作.
我已经开始试图将我的模型序列化为EDMX表示,然后从那里提取CSDL以便我可以创建一个oDataMediaTypeFormatter,但我也遇到了障碍,加上它似乎有点矫枉过正.
如果有人能够对此有所了解,那将非常感激.如果需要更多信息,请与我们联系.
编辑:
这是SimpleFormGroup的类定义:
public class SimpleFormGroup
{
public int LastUpdate;
public string Identifier;
public string Title;
public int DisplayOrder;
}
Run Code Online (Sandbox Code Playgroud)
这是我发送的数据:
Content-Type: 'application/json'
{ "DisplayOrder" : "20 }
Run Code Online (Sandbox Code Playgroud)
谢谢,皮特
在我们的ASP.net Web API背后,我们有一个代码第一实体框架模型.考虑以下(简化)实体:
public class Form
{
public long Id { get; set; }
public string Identifier { get; set; }
public virtual FormGroup Group { get; set; }
}
public class FormGroup
{
public long Id { get; set; }
public string Identifier { get; set; }
public virtual ICollection<Form> Forms { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,FormGroups和Forms之间存在1-Many关系.我的问题是,如何设计一个RESTful API,允许我们更改表单所属的组?
到目前为止,我已经提出了两种可能的方法,每种方法都有利弊:
将关系表示为链接结构:
{
"Id" : 1,
"Identifier" : "Form1",
"link" : {
"rel": "http://myapi/res/formgroup",
"href": "http://myapi/formgroups/1"
}
}
Run Code Online (Sandbox Code Playgroud)
优点:
缺点: …
我在 VS 2012 上使用 .net 4.5 创建了一个云项目。它由两个 Web 角色、一个 API 和一个前端网站组成。
我已按照此处的说明进行操作:http://msdn.microsoft.com/en-gb/library/windowsazure/gg443832.aspx以设置远程桌面并部署该服务。
当我尝试连接时(我对凭据进行了两次和三次检查),我被告知“用于连接的凭据不起作用”。请输入新的凭据。
我的 Web 角色都可以运行,并且我可以在浏览器中访问它们。
我尝试在部署后等待一段时间以传播更改,但这没有什么区别。我唯一能想到的是,除了下载适当的位以便从 Visual Studio 进行部署之外,我还没有对证书进行任何操作。我找不到任何说明我需要这样做的文档。
我也尝试过向用户名添加各种域,但没有任何效果。
我是否遗漏了什么,或者目前天蓝色有可能存在错误吗?
编辑:现在尝试从 Visual Studio 中删除云项目,删除 azure 中的云服务并仅使用单个 Web 角色重新部署。仍然看到问题所在。