MVC 4 Web API NullException错误(Noobie)

时间:2012-11-20 14:31:03

标签: asp.net-mvc ldap asp.net-web-api

我正在开发我的第一个MVC 4应用程序,遵循Asp.net上的MVC First Web API教程。我已经保留了相同的名称,但更改了模型和控制器代码。这是我的模特:

public class Product
{
    public string SID { get; set; }
    public string name { get; set; }
    public string givenName { get; set; }
    public string sn { get; set; }
    public string mail { get; set; }
    public string telephoneNumber { get; set; }
    public string mobile { get; set; }
    public string otherMobile { get; set; }
    public string title { get; set; }
    public string Manager { get; set; }
    public DateTime whenChanged { get; set; }
}

public class ProductModel
{
    public ProductModel()
    {
        ProductList = new List<Product>();
    }
    public IList<Product> ProductList { get; set; }
}

这是我的API控制器:

 public class ProductsController : ApiController
{
    ProductModel products = new ProductModel();

    public IEnumerable<Product> GetAD()
    {
        DirectoryEntry domainRoot = new DirectoryEntry(LDAP_server);
        DirectorySearcher searcher = new DirectorySearcher(searchStr);
        SearchResultCollection results = searcher.FindAll();
        foreach (SearchResult srchResult in results)
        {
            DirectoryEntry dirEntry = srchResult.GetDirectoryEntry();
            if (dirEntry.Properties["givenName"].Value != null && dirEntry.Properties["sn"].Value != null && !dirEntry.Parent.Name.Contains("Terminated"))
            {
                products.ProductList.Add(new Product()
                {
                    SID = dirEntry.Properties["sid"].Value.ToString(),
                    name = dirEntry.Properties["name"].Value.ToString(),
                    givenName = dirEntry.Properties["givenName"].Value.ToString(),
                    sn = dirEntry.Properties["sn"].Value.ToString(),
                    mail = dirEntry.Properties["mail"].Value.ToString(),
                    telephoneNumber = dirEntry.Properties["telephoneNumber"].Value.ToString(),
                    mobile = dirEntry.Properties["mobile"].Value.ToString(),
                    otherMobile = dirEntry.Properties["otherMobile"].Value.ToString(),
                    title = dirEntry.Properties["title"].Value.ToString(),
                    Manager = dirEntry.Properties["Manager"].Value.ToString(),
                    whenChanged = Convert.ToDateTime(dirEntry.Properties["whenChanged"].Value.ToString()),
                });
            }
        }
        return products.ProductList;
    }
}

我在'products.ProductList.Add(new Product()'上得到了NullException,我错过了一些简单的东西吗?请原谅我的编码,因为我只是想让它运行起来,谢谢。< / p>

2 个答案:

答案 0 :(得分:0)

问题主要是处理dirEntry,而不是Web API本身。而不是将LDAP引入其中,只需创建一堆虚拟产品即可返回。

仅供参考...使用LDAP对象时也存在内存泄漏问题。他们需要妥善处理,无论是在快乐的道路上,还是抛出异常。

答案 1 :(得分:0)

我是个白痴。 &#39; SID&#39;不是AD的正确属性名称,它是&#39; objectSid&#39;,因此始终返回null。我知道这很简单。