IIS 7 как загрузить сборку из папки Bin - PullRequest
1 голос
/ 08 февраля 2011

В решениях .NET я использую пользовательские классы для переводов. Основная идея перевода что файлы с переводами помещаются в папку рядом со сборкой.

Все работает нормально, когда он вызывается из приложения Windows Forms. Но это не работает, когда я звоню из веб-службы ...

Я отлаживаю веб-сервис через Visual Studio 2010 и встроенный отладчик. И я вижу, что встроенный ASP.NET Developpment загружается из C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Временные файлы ASP.NET \

и нет возможности найти мою папку с переводами ...

Так подскажите пожалуйста, что делать в этом случае?

Я тестировал под IIS7, он также не работает.

пример кода как загрузить сборку:

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

Ответы [ 4 ]

1 голос
/ 08 февраля 2011

В веб-среде обычно задают ключ в 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 голосов
/ 05 сентября 2011

Взгляните на решение, данное Джоном Сибли:

Как мне получить путь к сборке, в которой находится код?

Я думаю, что этобольше того, что вы ищете;) как это работает в обоих случаях (win и web)

0 голосов
/ 08 февраля 2011

Вы можете попытаться получить местоположение от типа.Например:

string strPath = 
   Path.Combine(
      Path.GetDirectoryName(typeof(LanguageSettings).Assembly.Location),
      "Language.config");
0 голосов
/ 08 февраля 2011

В веб-приложении ваши сборки будут находиться в папке bin.Предполагая, что ваш файл конфигурации находится на один уровень выше, в корне вашего приложения вы можете получить его путь, используя Server.MapPath, например, так (вам нужно будет ссылаться на System.Web).

...