我看到有人问过类似的问题,但我认为这些问题都没有专门解决我所看到的环境差异。我有一个包含GridView的ASP.NET Web窗体应用程序,我将其手动绑定到Entity Framework实体的集合。我正在使用BoundField引用我的一个实体上的导航属性。

先前的帖子表明不支持此功能,但是整个解决方案在Windows 7上运行的IIS 7.5中可以完美地工作。但是,当将应用程序部署到Windows Server 2003 R2上运行IIS 6的Web服务器时,它失败,出现:


“找不到名称为'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; }
}


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>


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

最佳答案

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

解决我的唯一问题是使用asp:BoundFieldasp:TemplateField替换为<%# Eval("Worker.FullName")%>

关于asp.net - 绑定(bind)到导航属性会导致“仅在IIS 6中找不到在所选数据源上名称为'X.X'的字段或属性”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19050993/

10-16 09:49