2011-02-08 21 views
1

.NETソリューションでは、カスタムクラスを使用して翻訳します。 翻訳フレームワークの主なアイディア 翻訳されたファイルはアセンブリの近くのフォルダに置かれます。IIS 7 Binフォルダからアセンブリをロードする方法

すべては、Windowsフォームアプリケーションから呼び出すときに問題なく動作します。 Webサービスから呼び出すとうまくいきません。

私はVisual Studio 2010とbult-inデバッガを使ってWebサービスをデバッグします。 そして私はBUITインASP.NET Developpmentが Cからassemply loadesていることを確認:\ WINDOWS \ Microsoft.NET \ Frameworkの\ v4.0.30319 \ ASP.NETの一時ファイル\

と私のフォルダを見つける可能性がありません翻訳あり...

この場合、どうすればよいですか?

私はIIS7でテストしましたが、これも機能しません。私はアセンブリをロードする方法

サンプル・コード:Webアプリケーションで

if (languageSettings == null)     
{ 
    TraceIt(assembly.Location); 
    string strPath = Path.Combine(Path.GetDirectoryName(assembly.Location), "Language.config"); 
    TraceIt(strPath); 
    languageSettings = new LanguageSettings(strPath); 
    if (!languageSettings.LoadSettings()) 
    { 
     languageSettings.CurrentLanguage = DefaultLocale; 
     languageSettings.SaveSettings(); 
    } 
} 

答えて

0

、あなたのアセンブリはbinフォルダに配置されます。設定ファイルが1レベル上にあると仮定すると、アプリケーションのルートには、Server.MapPathを使用してそのパスを取得できます(System.Webを参照する必要があります)。

ウェブ環境で
string strPath = HttpContext.Current.Server.MapPath("~/Language.config"); 
+0

それは大丈夫ですが、私はまた、Windowsサービスの下で同じコードを実行する必要があります..質問が存在する:どのようにコードがiisから呼び出されたかを確認するには? – TheNIK

+0

'HttpContext.Current'が' null'であるかどうかを確認します。そうでない場合は、これを実行します。 – wsanville

1

、あなたの言語データフォルダへの絶対パスでweb.configファイル内の設定に通常のキーの代わりに、実行フォルダの検索に頼る:

<appSettings> 
    <add key="Languages" value="D:\Data\Languages" /> 
</appSettings> 

と、中コード

stirng path = ConfigurationManager.AppSettings["Languages"] 
if (!String.IsNullOrEmplty(path)) 
{ 
    string file = Path.Combine(path, filename); 
    // and so on... 
} 
+0

OK、それは可能ですが、 – TheNIK

0

タイプから場所を取得できます。たとえば:

string strPath = 
    Path.Combine(
     Path.GetDirectoryName(typeof(LanguageSettings).Assembly.Location), 
     "Language.config"); 
+0

可能ですが、同じコードがIISとWindowsフォームとWindowsサービスの下で動作する必要がありますどのようにiisの下でwheコードの動作を決定するには? – TheNIK

+0

これはこれらのすべてで有効です。 – SwDevMan81

0

ジョンSiblyによって与えられた解決策を見てみましょう:

How do I get the path of the assembly the code is in?

私は、これはあなたが探しているものよりだと思う;)それは両方のケースで動作するように(勝利とウェブ)

関連する問題