【问题标题】:microsoft grpc-for-wcf-developers-master code fails on IIS微软 grpc-for-wcf-developers-master 代码在 IIS 上失败
【发布时间】:2020-06-27 06:31:42
【问题描述】:

获取grpc-for-wcf-developers-master,我尝试在Windows 10 上的IIS 版本10 上的tradersys 中托管WCF 服务,这会引发异常:

Error by IIS

必须先设置 AutofacServiceHost.Container 静态属性,然后才能实例化服务。 说明:执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

异常详细信息:System.InvalidOperationException:必须先设置 AutofacServiceHost.Container 静态属性,然后才能实例化服务。

来源错误:

在执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪来识别有关异常起源和位置的信息。

我知道此问题已在此处多次讨论过,例如 post。 然而,Microsft 的代码包含适当的 autofac 容器。

问题是:

在 IIS 上是否有任何特殊设置可以解决此问题? 正如我之前所说,IISExpress 运行良好。

似乎是其中的 AppInitialize() 方法

AutofacHostFactory.Container = builder.Build();

驻留,不调用。

【问题讨论】:

  • 感谢您的及时回复,我会检查并通知您。尽管 Microsoft 代码抛出异常的原因非常令人惊讶,但我希望它能够正常工作。

标签: wcf github iis autofac


【解决方案1】:

根据您的代码,我发现您需要将 IOC 与 WCF 集成,这需要更改您的代码。 这是我的演示:

这是我的项目目录。我们需要添加两个类:ManualProxy 和 CustomServiceHostFactory。

   public class CustomServiceHostFactory : ServiceHostFactory
    {
        protected override System.ServiceModel.ServiceHost
              CreateServiceHost(Type serviceType, Uri[] baseAddresses)
        {
            ManualProxy.TargetFactory = () => new PortfolioService(new PortfolioRepository());
            return base.CreateServiceHost(typeof(ManualProxy), baseAddresses);
        }
    }

这是 CustomServiceHostFactory 类。

 public class ManualProxy : IPortfolioService
    {
        private readonly IPortfolioService _target;

        public static Func<object> TargetFactory;

        public ManualProxy()
        {
            _target = (IPortfolioService)TargetFactory();
        }

     
        public Task<Portfolio> Get(Guid traderId, int portfolioId)
        {
            return _target.Get(traderId,portfolioId);
        }

        public Task<List<Portfolio>> GetAll(Guid traderId)
        {
            return _target.GetAll(traderId);
        }
    }

这是 ManualProxy 类。

如上图需要修改SVC文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-13
    • 2018-03-05
    • 1970-01-01
    • 2021-08-13
    相关资源
    最近更新 更多