0

最近、共有ホスト上の linq で問題が発生しました。
ホストは Shared Intellect で、フレームワークの v3.5 をサポートしています。ただし、SP1 がインストールされているかどうかはわかりません。私の疑いは、彼らはそうではないということです。

News次の構造を持つ単純なテーブルがあります。

NewsID          uniqueidentifier
Title           nvarchar(250)
Introduction    nvarchar(1000)
Article         ntext
DateEntered     datetime (default getdate())
IsPublic        bit (default true)

私の目標は、このテーブルから最新の 3 つのレコードを表示することです。私は最初に D&D メソッド (知っています、知っています) を使用し、linq データソースを作成しましたが、結果を希望どおりに制限する方法を見つけることができなかったので、それを削除して次のように書きました。

var dc = new NewsDataContext();
var news = from a in dc.News
           where a.IsPublic == true
           orderby a.DateEntered descending
           select new { a.NewsID, a.Introduction };
lstNews.DataSource = news.Take(3);
lstNews.DataBind();

これは私のローカルマシンで完全に機能しました。

ただし、すべてを共有ホストにアップロードすると、次のエラーが表示されました。

.Read_<>f__AnonymousType0`2
(System.Data.Linq.SqlClient.Implementation.ObjectMaterializer`1<System.Data.SqlClient.SqlDataReader>) 
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.MethodAccessException: 
.Read_<>f__AnonymousType0`2
(System.Data.Linq.SqlClient.Implementation.ObjectMaterializer`1<System.Data.SqlClient.SqlDataReader>)

Google でエラーを検索しようとしましたが、成功しませんでした。次に、想像できるあらゆる方法でクエリを変更しようとしました。where/orderby パラメーターのさまざまな組み合わせを削除し、クエリを 1 つの列に制限し、Take コマンドを削除しました。

したがって、私の質問は3つの部分に分かれています:

  1. 他の誰かがこれに遭遇しましたか? もしそうなら、「迅速な」修正はありますか?
  2. データソースを使用して行を制限する方法はありますか?
  3. 共有ホストが実行しているフレームワークのバージョンを特定する方法はありますか (私は行っており、回答を待っています)
4

1 に答える 1

2

System.MethodAccessExceptionアセンブリが欠落している場合、または参照の 1 つが間違ったバージョンである場合に、フレームワークによってスローされます。

私が最初に行うことは、共有ホスティング プロバイダー GAC ではなく、BIN 内の LINQ アセンブリにコードをアップロードして参照することです。

于 2008-08-24T23:12:37.667 に答える