我从通过代码创建的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;
}
}