WCF因http请求而崩溃

时间:2019-06-08 18:34:41

标签: c# wcf wcf-data-services

我从通过代码创建的WCF中收到以下错误。但是,我并不是在任何地方都可以使用日志来获取更多详细信息,以下消息并没有真正告诉我有关问题的所在,而且相当普遍。

我正在使用webservice主机创建http wcf服务。但是,我并没有触碰到端点,我的防火墙已关闭并且程序正在端口8000上运行,但是我不确定这是什么问题。

我将合同标记如下

[OperationContract]
List<Warehouse> GetWarehouses();

这是用于将端点绑定到端口8000的代码,其中ui是存储例如“ http://127.0.0.1:8000”的配置设置

  using (WebServiceHost serviceHost = new 
      WebServiceHost(typeof(IntegrationServer),new Uri(uri)))
        {
            try
            {
                using (Sage200Manager sManager = new Manager())
                {
                    bool isConnected =  Manager.Connect();

                    if (!isConnected) throw new ApplicationException("Unable to connect to Manager");

                    Console.WriteLine("Connected to Manager");

                    ServiceEndpoint serviceEndpoint = serviceHost.AddServiceEndpoint(typeof(IIntegrationServer), new WebHttpBinding(), "");
                    serviceHost.Description.Behaviors.Find<ServiceDebugBehavior>().HttpHelpPageEnabled = true;
                    serviceHost.Description.Behaviors.Find<ServiceDebugBehavior>().IncludeExceptionDetailInFaults = true;
              serviceHost.Open();

                    SqlDa da = new SqlDa();
                    var stockTransferManager = new StockTransferManager();

                    int interval = int.Parse(ConfigurationManager.AppSettings["IntervalInSeconds"]);

                    do
                    {
                        Console.WriteLine("Checking for stock transfers...");
                        DataTable transfers = stockTransferManager.GetStockTransfersToProcess();

                        if (transfers.Rows.Count > 0)
                        {
                            Console.WriteLine($"Processing {transfers.Rows.Count} transfers");
                            stockTransferManager.ProcessStockTransfers(transfers);
                            Console.WriteLine("Stock transfers processed.");
                        }
                        else
                        {
                            Console.WriteLine("No Stansfers to process.");
                        }

                        Console.WriteLine($"Pausing for {interval} seconds.");
                        Thread.Sleep(interval * 1000);
                    }
                    while (true);

                }
            }
  

服务器在处理请求时遇到错误。例外   消息是“用于   'Fuel.Sage200.Integration.Server.IntegrationServer'引发了   例外。'。有关更多详细信息,请参见服务器日志。异常堆栈   跟踪是:

     

在Sage200.Integration.Server.IntegrationServer..ctor()在   在以下位置创建Sage200.Integration.Server.IntegrationServer()   System.ServiceModel.Dispatcher.InstanceProvider.GetInstance(InstanceContext   instanceContext,消息消息)位于   System.ServiceModel.Dispatcher.InstanceBehavior.GetInstance(InstanceContext   instanceContext,消息请求)位于   System.ServiceModel.InstanceContext.GetServiceInstance(消息   讯息)   System.ServiceModel.Dispatcher.InstanceBehavior.EnsureServiceInstance(MessageRpc&   rpc)   System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage41(MessageRpc&   rpc)位于System.ServiceModel.Dispatcher.MessageRpc.Process(布尔   isOperationContextSet)

“获取仓库”调用的“我的函数”如下。

[WebInvoke(Method = "GET",
RequestFormat = WebMessageFormat.Json,
ResponseFormat = WebMessageFormat.Json)]
public List<Warehouse> GetWarehouses()
{
        List<Warehouse> _warehouses = new List<Warehouse>();
        _logManager.Debug($"Entering GetWarehouses");

        try
        {
            DataSet ds = new SqlDa().GetWarehouses();
            ds.Tables[0].TableName = "Warehouses";
            _warehouses = ds.Tables[0].ToList<Warehouse>();

            return _warehouses;
        }
        catch (Exception ex)
        {
            _logManager.Error(ex);
            throw;
        }
 }

0 个答案:

没有答案