6

ローカル iis で警告なしにプロジェクトを公開すると、正しく動作します (localhost/[myprojectName])。それで、cute ftp でサーバーにアップロードします。しかし、サーバーでは、[tableName].[filedName] のようなすべてのファイルに対してこのエラーが表示されます。

「ConfirmStatuse.Name」という名前のフィールドまたはプロパティが、選択したデータ ソースで見つかりませんでした

ここに私のコードがあります:

<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 だと思います。しかし、このエラーが発生することは重要ですか?!!! 私はそうは思わない。私は本当に混乱しています。

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

編集:別のホストでプロジェクトを公開すると、うまくいきます! しかし、元のサーバーではまだ動作しません。

4

4 に答える 4

5

これは、ここで説明されている問題と同じです -ナビゲーション プロパティにバインドすると、IIS 6 のみで「'XX' という名前のフィールドまたはプロパティが見つかりませんでした」というエラーが発生する

BoundField コントロール要素に問題があるようです。上記のリンクの記事でユーザーAnantが提供した回答で示唆されているように、BoundFieldをTemplateFieldに変換すると機能します(例では「OrderStatuse.Name」を使用)。その解決策は私にとってはうまくいきました。

これは、IIS6 がこの方法で BoundField をサポートできない理由を実際には説明していません。

気が遠くなるような。

于 2014-02-06T15:40:38.480 に答える
3

サーバーの IIS バージョンは 6 ですが、ローカルは 7.5 です。プロジェクトを iis 7.5 を使用して別のサーバーに公開しましたが、動作します

Solution1 : 次のような 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="ConfirmStatuse.Name"  />

<asp:BoundField DataField="ConfirmStatusName"  />

クラスをグリッドにバインドする

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

このタイプのリストを初期化し、プログラムでグリッドにバインドします

ソリューション 2変換の更新

asp:バウンドフィールド

asp:TemplateField と使用

<%# Eval("Worker.FullName")%>
于 2013-06-15T06:58:49.277 に答える
2

選択したクエリにこれらのバインドされたフィールドを追加して整理しました。

エラーメッセージ:

「tax_percentage」という名前のフィールドまたはプロパティが、選択したデータ ソースで見つかりませんでした

解決:

選択クエリで tax_percentage を選択しなかったため、上記のエラー メッセージが表示されました。tax_percentageクエリで を選択するだけです。

于 2016-01-13T03:56:40.093 に答える