如何在MVC webApi控制器操作中读取PUT请求中的内容.
[HttpPut]
public HttpResponseMessage Put(int accountId, Contact contact)
{
var httpContent = Request.Content;
var asyncContent = httpContent.ReadAsStringAsync().Result;
...
Run Code Online (Sandbox Code Playgroud)
我在这里得到空字符串:(
我需要做的是:弄清楚在初始请求中修改/发送了什么属性(意味着如果Contact对象有10个属性,并且我只想更新其中2个属性,我只发送和对象只有两个属性,这样的事情:
{
"FirstName": null,
"LastName": null,
"id": 21
}
Run Code Online (Sandbox Code Playgroud)
预期的最终结果是
List<string> modified_properties = {"FirstName", "LastName"}
Run Code Online (Sandbox Code Playgroud) 我正在尝试将Fluent验证连接到我的MVC WEB Api项目,它不想工作.
当我使用MyController : Controller- >工作正常(ModelState.IsValid返回False)
但是当我使用MyController :ApiController......没什么.
有没有人有关于如何挂钩的经验?
我正在尝试映射2个相同类型的对象.我想要做的是AutoMapper to toigonore所有属性,它们Null在源对象中有值,并保留目标对象中的现有值.
我已经尝试在我的"存储库"中使用它,但它似乎不起作用.
Mapper.CreateMap<TEntity, TEntity>().ForAllMembers(p => p.Condition(c => !c.IsSourceValueNull));
Run Code Online (Sandbox Code Playgroud)
可能是什么问题?
我正在尝试使用LINQ为图形准备数据.
我无法解决的问题是如何计算"与以前的差异.
我期望的结果是
ID = 1,Date = Now,DiffToPrev = 0;
ID = 1,日期=现在+ 1,DiffToPrev = 3;
ID = 1,日期=现在+ 2,DiffToPrev = 7;
ID = 1,日期=现在+ 3,DiffToPrev = -6;
等等...
你能帮我创建这样的查询吗?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
public class MyObject
{
public int ID { get; set; }
public DateTime Date { get; set; }
public int Value { get; set; }
}
class Program
{
static void Main()
{
var list = new List<MyObject>
{ …Run Code Online (Sandbox Code Playgroud) 我有一个MVC WebApi owin(软托管)项目,它使用Unity来解析控制器依赖项
看起来像这样
public class PacientaiController : ODataController
{
private readonly IEntityRepo<Ent.Pacientas> repo;
public PacientaiController(IEntityRepo<Ent.Pacientas> repo)
{
this.repo = repo;
}
Run Code Online (Sandbox Code Playgroud)
我试图解决的问题是 - 如何将'OwinContex'传递给回购.
public class PacientasEntityRepo:IEntityRepo<Pacientas>,IDisposable
{
public PacientasEntityRepo(IOwinContext ctx)
{
.........
Run Code Online (Sandbox Code Playgroud)
如果我尝试在这里注册它 Startup.cs
Container.RegisterType<IOwinContext>(new InjectionFactory(o => HttpContext.Current.GetOwinContext()));
Run Code Online (Sandbox Code Playgroud)
我得到一个空引用,说这HttpContext.Current是NULL
这里的主要思想是将当前经过身份验证的用户传递给repo,因为Repo托管逻辑以查询数据库,具体取决于用户.(如果用户是Admin,则返回此数据,如果用户是guest - 返回此数据)
关键是 - 这是一个自我主持人!
我正在开发一个MVC WebAPI,它使用EF和POCO类进行存储.我想要做的是从XML中删除命名空间,以便端点返回并接受没有它的xml对象.(json工作得很好)
<ACCOUNT xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/Platform.Services.AccountService.Data">
<id>22</id>
<City i:nil="true"/>
<Country i:nil="true"/>
<Email>testas@email.com</Email>
<Phone i:nil="true"/> ...
Run Code Online (Sandbox Code Playgroud)
我希望这能奏效
<ACCOUNT>
<id>22</id>
<City i:nil="true"/>
<Country i:nil="true"/>
<Email>testas@email.com</Email>
<Phone i:nil="true"/> ...
Run Code Online (Sandbox Code Playgroud)
希望无需用一堆属性来装饰POCO.
我为此设置了一个测试解决方案,实际上,这些方法正在受到欢迎(必须是我系统中的其他一些问题).无论如何 - 我使用这个解决方案的结果是:
<ArrayOfAccount>
<Account>
<id>22</id>
<name>TestAcc</name>
<parentid xmlns:d3p1="http://www.w3.org/2001/XMLSchema-instance" d3p1:nil="true"/>
<status_id xmlns:d3p1="http://www.w3.org/2001/XMLSchema-instance" d3p1:nil="true"/>
<Email>Test@Test.com</Email>
</Account>
</ArrayOfAccount>
Run Code Online (Sandbox Code Playgroud)
摆脱了顶部的架构,但现在搞砸了属性:(这是一个示例项目的链接
我想写一个PS脚本,它将遍历它可以在本地网络上找到的所有机器,查看"SomeDirectory",如果存在文件,则用新版本的UNC路径覆盖它.
第一个问题是获取可在Windows中找到的PC列表 - >网络

我怎样才能让odata v3和v4 api在同一个项目上并排工作?
同一个控制器可以返回两种格式的数据吗?我是否需要拥有同一个控制器的2个副本 - 每个Odata版本一个?
我知道这应该是可能的,因为官方WEBAPI页面说它是专为.
"ASP.NET Web API支持协议的v3和v4.你甚至可以拥有一个与v3端点并行运行的v4端点." - 来自www.asp.net的报价
问题是 - 我该怎么做?任何教程?
我正在尝试编写一个Owin midleware组件,它将记录每个传入的请求和对数据库的响应.
这是我设法得到多远.
我一直在阅读回复.说:
Stream不支持阅读.
我如何阅读Response.Body?
public class LoggingMiddleware : OwinMiddleware
{
private static Logger log = LogManager.GetLogger("WebApi");
public LoggingMiddleware(OwinMiddleware next, IAppBuilder app)
: base(next)
{
}
public override async Task Invoke(IOwinContext context)
{
using (var db = new HermesEntities())
{
var sw = new Stopwatch();
sw.Start();
var logRequest = new log_Request
{
Body = new StreamReader(context.Request.Body).ReadToEndAsync().Result,
Headers = Json.Encode(context.Request.Headers),
IPTo = context.Request.LocalIpAddress,
IpFrom = context.Request.RemoteIpAddress,
Method = context.Request.Method,
Service = "Api",
Uri = context.Request.Uri.ToString(),
UserName = context.Request.User.Identity.Name
};
db.log_Request.Add(logRequest); …Run Code Online (Sandbox Code Playgroud) 我使用C#,.NET 4.5,控制台应用程序.我在服务引用中添加了WSDL文件.内部WSDL是验证规则,如:
<xs:complexType name="xRequest">
<xs:sequence>
<xs:element name="SenderDateTime" type="ip:grDateTime"/>
<xs:element name="SenderId" type="ip:grIdentifier"/>
</xs:sequence>
</xs:complexType>
Run Code Online (Sandbox Code Playgroud)
还有XSD文件,验证规则的详细信息如下:
<xs:simpleType name="grDateTime">
<xs:restriction base="xs:dateTime">
<xs:pattern value="[0-9]{4,4}\-[0-9]{2,2}\-[0-9]{2,2}[T][0-9]{2,2}:[0-9]{2,2}:[0-9]{2,2}(\.[0-9]{1,6}){0,1}"/>
</xs:restriction>
</xs:simpleType>
Run Code Online (Sandbox Code Playgroud)
我在Reference.cs中自动生成了WSDL的属性,如:
public partial class xRequest
{
private string senderIdField;
[System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified, Order=1)]
public string SenderId {
get {
return this.senderIdField;
}
set {
this.senderIdField = value;
this.RaisePropertyChanged("SenderId");
}
}
}
Run Code Online (Sandbox Code Playgroud)
我将xRequest对象序列化为XML,我想验证它.当部分验证规则在WSDL中时,如何使用XSD验证XML?
c# ×8
.net ×2
asp.net-mvc ×2
owin ×2
xml ×2
automapper ×1
diff ×1
httpcontent ×1
linq ×1
odata ×1
pivot ×1
powershell ×1
repository ×1
wsdl ×1
xsd ×1