绑定到导航属性会导致"仅在IIS 6中找不到所选数据源上具有名称'XX'的字段或属性"

Joh*_*soe 2 asp.net data-binding iis gridview entity-framework

我看到类似的问题已被提出,但我认为它们中没有一个专门解决我所看到的环境差异.我有一个包含a的ASP.NET Web窗体应用程序,GridView我手动绑定到实体框架实体的集合.我正在使用一个BoundField引用我的某个实体的导航属性.

以前的帖子表明这不受支持,但整个解决方案在Windows 7上运行的IIS 7.5中运行良好.但是,当应用程序部署到在Windows Server 2003 R2上运行IIS 6的Web服务器时,它会失败并显示HttpException:

"在所选数据源上找不到名为'Worker.FullName'的字段或属性."

以下是代码的相关摘要:

实体:

public class WorkerAssignment
{
    public Guid Id { get; set; }
    public Guid WorkerId { get; set; }

    public virtual Worker Worker { get; set; }
}

public class Worker
{
    public Guid Id { get; set; }

    public string FullName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

ASPX:

<asp:GridView 
    ID="gvWorkers" 
    runat="server" 
    AutoGenerateColumns="False" 
    DataKeyNames="Id"
>
    <Columns>
        <asp:BoundField 
            DataField="Worker.FullName" 
            SortExpression="Worker.FullName" 
            HeaderText="Worker Name" 
        />
    </Columns>
</asp:GridView>
Run Code Online (Sandbox Code Playgroud)

两台服务器都运行.NET Framework 4.0.30319.IIS 7.5和IIS 6之间的区别是什么导致代码在前一环境中正常运行而后者失败?

小智 10

我也面临同样的问题.类似的代码DataField="Worker.FullName"工作正常,但突然开始在DEV上抛出错误,但没有localhost.我无法指出确切的问题.

唯一的解决办法解决我的问题是,以取代asp:BoundFieldasp:TemplateField<%# Eval("Worker.FullName")%>