Как получить доступ к виртуальному каталогу из службы WCF, которая не работает на том же сервере, что и виртуальный каталог? - PullRequest
0 голосов
/ 08 мая 2019

У меня есть служба WCF под названием «SQLInterfaceLibrary», которая работает на компьютере через WcfSvcHost.exe.Я могу вызвать все его конечные точки с помощью WcfTestClient.exe, подключившись к URI "http://localhost:8733/Design_Time_Addresses/SQLInterfaceLibrary/mex".. На самом деле, я даже могу подключиться к нему напрямую из приложения C # с помощью файла" References.cs ", который я генерирую с помощьювызывает SvcUtil.exe. Однако требования моего проекта гласят, что я должен получить доступ к виртуальному каталогу IIS из этой службы. Я обнаружил еще одну публикацию StackOverflow, в которой предлагается использовать функцию «HttpContext.Current.Server.MapPath». Однако при вызовеэто из моего сервиса, я получаю следующую ошибку:

"System.NullReferenceException: 'Ссылка на объект не установлена ​​на экземпляр объекта.'"

Я думаю, что это происходит, потому чтоЯ пытаюсь получить доступ к виртуальному каталогу на другом компьютере. Может ли кто-нибудь, имеющий опыт программирования WCF, ручаться за это? Вам не нужно предоставлять подробное объяснение, просто да или нет. Спасибо!

1 Ответ

0 голосов
/ 08 мая 2019

По умолчанию, wcf httpcontext имеет значение null, вы должны установить для aspNetCompatibilityEnabled значение true в вашем файле web.config.

   <serviceHostingEnvironment aspNetCompatibilityEnabled="true"
  multipleSiteBindingsEnabled="true" />

Если httpcontext по-прежнему равен нулю, вы можете добавить атрибут AspNetCompatibilityRequirements вваш сервис

[AspNetCompatibilityRequirements(RequirementsMode =AspNetCompatibilityRequirementsMode.Required)]
public class CalculatorService : ICalculatorService
{
    public double Add(double a, double b)
    {
      HttpContext context=  HttpContext.Current;
      string dir =  Directory.GetCurrentDirectory();
        return a + b;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...