0

タイトルが示すように、複数の言語をサポートするデータベース リソース プロバイダーとして WestWind.globalisation を使用しています。

問題は、リソース プロバイダー自体が、私がアプリケーションに加えた変更を反映することに消極的であるように見えることです。

例:

私は要素を持っています:

<asp:Image runat="server" ID="img_placeholder" ImageUrl="~/images/BigPicture.jpg" />

次のデータをローカリゼーション テーブルに挿入しました。

pk  ResourceId              Value                          LocaleId  ResourceSet
--------------------------------------------------------------------------------
391 ImgBigPicture.ImageUrl  ~/images/BigPicture-en-US.jpg   en-US    Site.master
392 ImgBigPicture.ImageUrl  ~/images/BigPicture.jpg              Site.master
393 ImgBigPicture.ImageUrl  ~/images/BigPicture-fr-FR.jpg   fr-FR    Site.master

この後、マークアップを次のように変更しました。

<asp:Image runat="server" ID="img_placeholder" ImageUrl="~/images/BigPicture.jpg" meta:resourceKey="ImgBigPicture"/>

アプリケーションを更新または再構築すると、変更がブラウザに表示されません。画像のURLはそのままです。であれ であれ、任意の要素で同じことが観察できasp:Labelますasp:Button

場合によっては、IIS を再起動するだけで十分です。変更を機能させるには、Visual Studio と Chrome を再起動するだけで十分な場合があります。ほとんどの場合、サーバーを再起動して、すべてが現在の実際の状態で表示されるようにする必要があります。その場合、UIculture を切り替えることができ、それに応じてプロパティが変更されます。

何が起こっているのかわからず、コードをステップ実行しても何もわかりません。

これに対処する方法についての提案や解決策を受け入れます。

4

1 に答える 1

0

リソース セットが .NET で機能する方法では、リソース セットは 1 回だけ読み込まれ、メモリにキャッシュされます。これは、ResourceSet が ASP.NET によって初めて要求されたときにリソースが読み込まれ、AppDomain が再起動されるまで二度と読み込まれないことを意味します。そのため、db リソースに加えた変更はすぐには反映されません。

管理フォームには、DbResources をアンロードできるオプションがあります。dbResourceProvider は、このメカニズムを使用してリソースのアンロードをサポートし、次のアクセスでリロードを強制します。したがって、これを行わない限り、リソースはリロードされません。

IIS の再起動、アプリケーション プールのリサイクル、さらには web.config の変更 (AppDomain のシャットダウンと再起動を引き起こすもの) によっても、リソースがクリアされ、最初からやり直されます。

それでも同じリソースが表示される場合は、おそらくブラウザーのキャッシュを扱っています。特に Chrome はブラウザのキャッシュを非常に積極的に使用しており、画像を明示的にウィンドウにロードしてハード リフレッシュ (Shift-f5) を実行した場合にのみ画像がリロードされることがよくあります。Chrome でテストしていて、新しい画像を表示したい場合は、開発者ツールの [ブラウザー キャッシュをクリア] オプションを使用してキャッシュを完全にクリアします (または、[更新] ボタンを右クリックして、[キャッシュをクリアして再読み込み] を選択します)。

于 2015-03-16T09:03:48.767 に答える