2013-06-15 6 views
5

ローカルiisで警告なしにプロジェクトを公開すると、正しく動作します(localhost/[myprojectName])。だから、私はかわいいftpでサーバーにアップロードします。 。エラー:「選択したデータソースに名前のあるフィールドまたはプロパティが見つかりませんでした」サーバのみで取得

A field or property with the name 'ConfirmStatuse.Name' was not found on the selected data source

は、ここに私のコードです:しかし、サーバーに、私はすべての私の[tableNameの]のように[filedName]提出されたため、このエラーがつくれ取得

<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> 

私は地元のIISの私のプロジェクトのサイズを確認し、オンサーバ。どちらも同じです(8,459,009バイト)

これは、ローカルとサーバー上で実行するために私のアプリケーションを実行するために同じデータベースと同じファイルを使用することを意味します。だから私はなぜサーバーでのみこのエラーが表示されますか?

ここでの違いはiisのバージョンで、私のサーバiisバージョンは7.0だと思います。しかし、私はこのエラーを得るために重要ですか?私はそうは思わない。私は本当に混乱しています。

(私のローカルプロジェクトとサーバープロジェクトは同じ接続文字列を使用します)。

編集:私は別のホストにプロジェクトを公開しています。私の元のサーバーではまだ動作しません。

+0

結果のは、 LINQクエリオブジェクトには、指定されたプロパティがありません。あなたにとってはっきりとはっきりしないものは何ですか?エラーメッセージはかなり簡単です。 – abatishchev

+1

こんにちは、私は結果のクエリでそのプロパティを持っています。エラーメッセージはかなり明確ですが、なぜローカルでは動作しますが、サーバでは動作しません。私はすべてのことをチェックする。すべてが同じです。 @abatishchev – Mohammadreza

+0

さて、わかりました。うーん。おそらく、あなたはアプリケーションに正しくコピーされていて、アセンブリはキャッシュされていないと確信していますか?ダブルチェック。 Temp ASP.NET Filesフォルダを削除してみてください。 – abatishchev

答えて

3

私のサーバー上のIISバージョンは6.ですが、私のローカルは7.5です。 私は、IIS 7.5で別のサーバー上の私のプロジェクトを公開し、それがソリューション1

に動作します:私はこのようなsummaryOfOrder作成:

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; } 


    } 

をして

<asp:BoundField DataField="ConfirmStatusName" /> 

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

を変更

とbin

gv.datasource = mySummryOfOrder; 
gv.databind(); 

と、このタイプのリストを初期化し、グリッドにバインドすることにより、グリッドへのDクラスは、プログラム

更新溶液を2

asp:BoundField

を変換

asp:TemplateField and using

<%# Eval("Worker.FullName")%> 
+0

それはそれが長い時間を試した後に働いた!しかし、別のサーバーに配備した後に問題が発生した理由が分からない場合、私のローカルのboundfieldで正しく動作していました。それは、.NET 4.5をEF 6搭載のマシンに搭載していて、デプロイメントサーバに.NET 4があり、おそらくEF6を搭載していたからですか? –

+0

私は確信していませんが、IISのためだと思います。@ AltafPatel – Mohammadreza

+0

どちらのマシンもIIS 6.1を持っていましたが、後でSP2を除いています。 @モハマドレザ –

5

これは、ここで説明した問題と同じです。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

BoundFieldコントロール要素の問題であるようです。上にリンクされた記事のan answer provided by user Anantで示唆されているように、BoundFieldをTemplateFieldに変換することができます(あなたの例では "OrderStatuse.Name"を使用します)。その解決策は私のために働いた。

IIS6がこの方法でBoundFieldをサポートすることはできませんなぜこれが本当にを説明しませんが。

マインドバギー。

+0

ありがとう – Mohammadreza

2

私は、選択したクエリのバインドされたフィールドを追加して並べ替えました。

エラーメッセージ:

A field or property with the name 'tax_percentage' was not found on the selected data source

ソリューション:

上記のエラーメッセージが来たので、私は選択クエリでtax_percentageを選択しませんでした。クエリでtax_percentageを選択するだけです。

2

あなたのデータソースは、オブジェクトのリストである場合は、あなたのクラスのプロパティは、次のように、パブリックとしてdefiniedされていることを証明:

class YourClass 
{ 
    public int Id { get; set; } 
    public string Name{ get; set; } 
} 

反対に:

class YourClass 
{ 
    private int Id { get; set; } 
    private string Name{ get; set; } 
} 

よろしく

関連する問題