小编Mar*_*rty的帖子

在WebApi控制器中读取HttpContent

如何在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)

c# asp.net-mvc asp.net-web-api httpcontent

67
推荐指数
3
解决办法
11万
查看次数

如何将FluentValidator挂钩到Web API?

我正在尝试将Fluent验证连接到我的MVC WEB Api项目,它不想工作.

当我使用MyController : Controller- >工作正常(ModelState.IsValid返回False)

但是当我使用MyController :ApiController......没什么.

有没有人有关于如何挂钩的经验?

c# fluentvalidation asp.net-web-api

30
推荐指数
2
解决办法
2万
查看次数

AutoMapper.Map忽略源对象的所有Null值属性

我正在尝试映射2个相同类型的对象.我想要做的是AutoMapper to toigonore所有属性,它们Null在源对象中有值,并保留目标对象中的现有值.

我已经尝试在我的"存储库"中使用它,但它似乎不起作用.

Mapper.CreateMap<TEntity, TEntity>().ForAllMembers(p => p.Condition(c => !c.IsSourceValueNull));
Run Code Online (Sandbox Code Playgroud)

可能是什么问题?

.net c# repository automapper

21
推荐指数
2
解决办法
2万
查看次数

使用LINQ计算与上一项的差异

我正在尝试使用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)

linq diff pivot

19
推荐指数
4
解决办法
1万
查看次数

如何将Owin上下文传递给注入Api控制器的Repo

我有一个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 - 返回此数据)

关键是 - 这是一个自我主持人!

c# unity-container owin asp.net-web-api2

19
推荐指数
1
解决办法
7680
查看次数

调整MVC 4 WebApi XmlSerializer以丢失nameSpace

我正在开发一个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)

摆脱了顶部的架构,但现在搞砸了属性:(这是一个示例项目的链接

c# xml asp.net-mvc xml-serialization asp.net-web-api

13
推荐指数
2
解决办法
2万
查看次数

PowerShell获取网络计算机列表

我想写一个PS脚本,它将遍历它可以在本地网络上找到的所有机器,查看"SomeDirectory",如果存在文件,则用新版本的UNC路径覆盖它.

第一个问题是获取可在Windows中找到的PC列表 - >网络 在此输入图像描述

powershell

13
推荐指数
4
解决办法
4万
查看次数

webApi2 Odata v3和V4并排

我怎样才能让odata v3和v4 api在同一个项目上并排工作?

同一个控制器可以返回两种格式的数据吗?我是否需要拥有同一个控制器的2个副本 - 每个Odata版本一个?

我知道这应该是可能的,因为官方WEBAPI页面说它是专为.

"ASP.NET Web API支持协议的v3和v4.你甚至可以拥有一个与v3端点并行运行的v4端点." - 来自www.asp.net的报价

问题是 - 我该怎么做?任何教程?

c# odata asp.net-web-api2

9
推荐指数
1
解决办法
5042
查看次数

请求/响应记录的响应正文

我正在尝试编写一个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# asp.net-web-api owin

6
推荐指数
2
解决办法
1万
查看次数

当验证规则的一部分在WSDL中时,如何使用XSD验证XML

我使用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?

.net c# xml xsd wsdl

6
推荐指数
1
解决办法
474
查看次数