Rocho.J

人脑是不可靠的, 随时记录感悟并且经常重复!

 

[转] --- Error: “A field or property with the name was not found on the selected data source” get only on server

Error: “A field or property with the name was not found on the selected data source” get only on server

up vote
4
down vote
favorite
2
I publish my project without any warning on local iis and it works correctly (localhost/[myprojectName]). so, i upload them to server with cute ftp. but in server i get this error apear for all my filed like [tableName].[filedName]:

A field or property with the name 'ConfirmStatuse.Name' was not found on the selected data source
here's my code:

<asp:GridView ID="ordergv" runat="server" DataKeyNames="Id" AutoGenerateColumns="False" DataSourceID="SummaryOfOrderSrc" AllowSorting="True">
<Columns>
<asp:CommandField SelectText="select" ShowSelectButton="True" ButtonType="Button"/>
<asp:BoundField DataField="OrderId" />
<asp:BoundField DataField="ConfirmStatuse.Name" />
<asp:BoundField DataField="OrderStatuse.Name"/>
<asp:BoundField DataField="PaymentStatuse.Name"/>
<asp:BoundField DataField="ShipmentStatuse.Name" />
<asp:TemplateField >
<ItemTemplate>
<asp:Label ID="CreatedDateLabel" runat="server" Text='<%# GetPersianDate( Eval("CreatedDate")) %>' /></ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>

<asp:LinqDataSource ID="SummaryOfOrderSrc" runat="server" ContextTypeName="Ahooratech.DAL.DataClasses1DataContext" EntityTypeName="" OrderBy="CreatedDate desc" TableName="Orders">
</asp:LinqDataSource>
I check the size of my project in local iis and on server. both of them are same(8,459,009 bytes)

so it means i use same database and same files for run my application for run on local and server. so why i get this error only in server?

The only difference here is on version of iis, i think my server iis version is 7.0. but is it important for i get this error?!!! i don't think so. i'm really confused.

(My local project and server project use same connection string).

EDIT: I publish project on another host and it works! but it doesn't work on my original server yet.

asp.net .net-4.0 iis-7.5 sql-server-2012
shareimprove this question
edited Jun 15 '13 at 6:26

asked Jun 15 '13 at 5:30

Mohammadreza
97441434

Resulting LINQ query object doesn't have the property given. What exactly is not clear for you? Error message is pretty straight forward. – abatishchev Jun 15 '13 at 5:39
1
hi dear, I have that property in my result query. error message is pretty clear but why it work on local but not work on server. I check the all things. all thing are same. @abatishchev – Mohammadreza Jun 15 '13 at 5:46

Okay, I see. Hmm. Maybe you have a silly but hidden mistake in deployment: are you sure you've copied the app properly and assemblies weren't cached? Double check. And try to delete Temp ASP.NET Files folder. – abatishchev Jun 15 '13 at 5:51

yes. i also delete all of them files and publish them. they are exactly same is size, even in bytes 8,459,009 bytes. i'm really confused @abatishchev . what thing can i ask or search for this error ?! – Mohammadreza Jun 15 '13 at 6:04
1
I too am having this issue. I have complete control over both my local and the web server environments and have assured that code/database are all identical. This definitely seems to be a version issue. – John Bledsoe Sep 26 '13 at 20:50
show 4 more comments
2 Answers
activeoldestvotes
up vote
6
down vote
This is the same issue to the one described here - Binding to Navigation Property causes " A field or property with the name 'X.X' was not found on the selected data source" in IIS 6 ONLY

It appears to be an issue with the BoundField control element. As suggested in an answer provided by user Anant in the article linked above, you can convert the BoundField to a TemplateField and it will work (using "OrderStatuse.Name" in your example). That solution worked for me.

Although this really doesn't explain why IIS6 can't support the BoundField in this way.

Mind boggling.

shareimprove this answer
answered Feb 6 '14 at 15:40

JamesHough
6113

thank you so much – Mohammadreza Feb 8 '14 at 6:19
add a comment

Did you find this question interesting? Try our newsletter

Sign up for our newsletter and get our top new questions delivered to your inbox (see an example).
email address
Subscribe
up vote
2
down vote
accepted
I found the IIS Version on my server is 6. but my local is 7.5. I publish my project on another server with iis 7.5 and it works

Solution1: I create a summaryOfOrder like this:

class summaryOfOrder
{
public int Id { get; set; }
public int OrderId { get; set; }
public string ConfirmStatusName { get; set; }
public string OrderStatusName { get; set; }
public string PaymentStatusName { get; set; }
public string ShippingStatusName { get; set; }
public string CreatedDate { get; set; }


}
and change

<asp:BoundField DataField="ConfirmStatuse.Name" />
to

<asp:BoundField DataField="ConfirmStatusName" />
and bind class to grid by

gv.datasource = mySummryOfOrder;
gv.databind();
and initialize a list of this type and bind it to grid programmatically

Update solution 2 convert

asp:BoundField
to

asp:TemplateField and using

<%# Eval("Worker.FullName")%>
shareimprove this answer
edited Aug 26 at 18:35

Seva Alekseyev
36.3k1379172
answered Jun 15 '13 at 6:58

Mohammadreza
97441434

That got it working after trying for long time ! But don't know why issue was occurring after deployed on different server, it was working correctly with boundfield on my local. Is it because I have .NET 4.5 on my machine which has EF 6 where as deployment server had .NET 4 and probably with EF6 ? – Altaf Patel Sep 10 '14 at 10:27

I'm not sure but think it's because of IIS.@AltafPatel – Mohammadreza Sep 15 '14 at 2:23

Both machines had IIS 6.1, except later had SP2. @Mohammadreza – Altaf Patel Sep 16 '14 at 6:34

posted on 2015-11-28 10:39  RJ  阅读(517)  评论(0编辑  收藏  举报

导航