“ System.Collections.Generic.HashSet <>”不包含“第一”的定义

时间:2019-03-18 13:56:03

标签: c# asp.net-mvc iis

我正在尝试在本地IIS中部署ASP.NET MVC应用程序。我同时拥有源代码和已发布的版本。但是,发布的版本和我发布源代码时获得的版本均会在执行以下作为Controller一部分的方法时失败:

[HttpPost]
[ValidateAntiForgeryAngular]
public async Task<FileDescription> Save([FromBody]dynamic nameobj)
{
    var loggedinUser = await UserManager.FindByNameAsync(User.Identity.Name);

    if (loggedinUser == null) throw new HttpResponseException(HttpStatusCode.InternalServerError);
    var nameId = nameobj["nameId"].Value;
    var document = await StorageManager.SaveDocument(nameId);
    if (document == null) throw new HttpResponseException(HttpStatusCode.InternalServerError);

    var uploader = document.Accesses.First().User.UserName;
    return new FileDescription(uploader, document.doc_name, document.temporary_name, document.doc_data.Length);
}

当执行行var uploader = document.Accesses.First().User.UserName;并显示以下错误消息时,将发生故障:

  

“ ExceptionMessage”:“'System.Collections.Generic.HashSet'   不包含“第一”的定义”

     

“ ExceptionType”:“ Microsoft.CSharp.RuntimeBinder.RuntimeBinderException”

我知道First是HashSet的扩展方法,无法找到。我已经看到类似问题中的错误消息包含以下内容:and no extension method 'XXX' accepting a first argument of type 'XXX' could be found

可能是我的设置不寻找扩展方法吗?

我已经广泛搜索了类似问题的答案,并尝试对web.config进行了一些更改,例如指定名称空间。但是,由于发布的版本应该可以正常使用,因此我认为该问题可能与我的IIS配置,.net版本或类似的问题有关。

我的应用程序池.NET CRL版本是v4.0.30319。

编辑:

我的控制器确实使用:using System.Linq;,并且此方法没有关联的视图,我也可以在其中添加它。

如果按照以下方式更改上传器的类型,则不会发生错误:

Document document = await StorageManager.SaveDocument(nameId);

使用var是否会强制编译器使用动态对象?

0 个答案:

没有答案