Я создал простой сервер webservice, но для вызова методов из класса службы в том же проекте я создал webchannelfactory proxy. Все работает нормально, пока я не переведу проект (или версию exe) на другую машину. Я не могу понять, что происходит!C# WCF ChannelFactory BadRequest 400 Ошибка
Я получаю сообщение об ошибке:
The remote server returned an unexpected response: (400) Bad Request.
с StackTrace:
Server stack trace:
at System.ServiceModel.Channels.HttpChannelUtilities.ValidateRequestReplyResp
onse(HttpWebRequest request, HttpWebResponse response, HttpChannelFactory factor
y, WebException responseException, ChannelBinding channelBinding)
at System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpCha
nnelRequest.WaitForReply(TimeSpan timeout)
at System.ServiceModel.Channels.RequestChannel.Request(Message message, TimeS
pan timeout)
at System.ServiceModel.Dispatcher.RequestChannelBinder.Request(Message messag
e, TimeSpan timeout)
at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean on
eway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan tim
eout)
at System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCall
Message methodCall, ProxyOperationRuntime operation)
at System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)
Exception rethrown at [0]:
at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage req
Msg, IMessage retMsg)
at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgDa
ta, Int32 type)
at Client.IClientService.dosomething()
at Host.ClientHost.Start(Uri hostUri, Int32 interval) in C:\(...)
Код:
WebChannelFactory<Client.IClientService> factory = new WebChannelFactory<Client.IClientService>(hostUri);
Client.IClientService proxy = factory.CreateChannel();
proxy.dosomething(); // Error shout here on Machine2
Заранее спасибо
EDIT1: Для т его пример, нет клиентской стороны (я назвал Client для этого сервера). Как я уже сказал, код работает без ошибок на другом компьютере (оба используют localhost).
<?xml version="1.0"?>
<configuration>
<appSettings>
<system.serviceModel>
<bindings>
</bindings>
<services>
<service name="Client.ClientService" behaviorConfiguration="Default">
<endpoint address="" binding="webHttpBinding" contract="Client.IClientService"></endpoint>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="Default">
<serviceMetadata httpGetEnabled="true"></serviceMetadata>
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>
</configuration>
EDIT2:
В браузере, я получил это:
Сервер обнаружил ошибку при обработке запроса. Исключение message: «Инициализатор типа для« Client.ClientService »выбрал исключение . '. Подробнее см. Журналы сервера. Исключение стека след:
на Client.ClientService..ctor() в CreateClient.ClientService() в System.ServiceModel.Dispatcher.InstanceProvider.GetInstance (InstanceContext InstanceContext, сообщение) на сообщение System.ServiceModel .Dispatcher.InstanceBehavior.GetInstance (InstanceContext InstanceContext, сообщение запроса) на System.ServiceModel.InstanceContext.GetServiceInstance (Message сообщение) на System.ServiceModel.Dispatcher.InstanceBehavior.EnsureServiceInstance (MessageRpc & RPC) в System.ServiceModel .Dispatcher.Immutab leDispatchRuntime.ProcessMessage41 (MessageRpc & RPC) в System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage4 (MessageRpc & Rpc) в System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage31 (MessageRpc & Rpc) при System.ServiceModel.Dispatcher .ImmutableDispatchRuntime.ProcessMessage3 (MessageRpc & RPC) в System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage2 (MessageRpc & Rpc) в System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage11 (MessageRpc & RPC) в System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage1 (MessageRpc & Rpc) в System.ServiceModel.Dispatcher.MessageRpc.Process (Boolean isOperationContextSet)