2013-08-26 4 views
0

Я создал простой сервер 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)

ответ

0

проблема решена.

Служба использует базу данных, поэтому, когда я копирую проект на новый компьютер, я забыл создать новую базу данных.