2016-08-15 2 views
0

У меня есть служба WCF, которая принимает один строковый параметр. Когда я пытаюсь дать ему вызов, я получаю сообщение об ошибке «Сервер обнаружил ошибку при обработке запроса. Подробнее см. В журналах журналов» Я воспроизвел эту проблему, передав также запрос json от скрипача. Просто убедитесь, что мой jQuery $ .ajax() не имеет проблемы.Передача параметров json в функцию WCF с выдачей ошибки «Сервер обнаружил ошибку при обработке запроса. Подробнее см. Журналы журналов»

Вот мой ServiceContract, класс WCF и конфигурацию -

Service Contract -

[ServiceContract] 
public interface iAgentDesktop 
{ 
    [OperationContract] 
    string Transfer(string extensionNumber); 
    [OperationContract] 
    string Conference(string extensionNumber); 
} 

службы WCF

public class AgentDesktopMediator : iAgentDesktop 
{ 
    string iAgentDesktop.Conference(string extensionNumber) 
    { 
      //do something 
      return ""; 
    } 
    string iAgentDesktop.Conference(string extensionNumber) 
    { 
     do something 
     return ""; 
    } 
} 

файл конфигурации -

<?xml version="1.0"?> 
<configuration> 
    <system.serviceModel> 
    <services> 
     <service name="WCFListener.AgentDesktopMediator"> 
     <host> 
      <baseAddresses> 
      <add baseAddress="http://localhost:8070/"/> 
      </baseAddresses> 
     </host> 
     <endpoint address="AgentDesktopMediator" binding="basicHttpBinding" contract="WCFListener.iAgentDesktop"></endpoint> 
     <endpoint address="jAgentDesktopMediator" binding="webHttpBinding" contract="WCFListener.iAgentDesktop" behaviorConfiguration="web"></endpoint> 
     <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"></endpoint> 
     </service> 
    </services> 
    <behaviors> 
     <serviceBehaviors> 
     <behavior> 
      <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/> 
      <serviceDebug includeExceptionDetailInFaults="false"/> 
     </behavior> 
     </serviceBehaviors> 
     <endpointBehaviors> 
     <behavior name="web"> 
      <webHttp defaultOutgoingResponseFormat="Json"/> 
     </behavior> 
     </endpointBehaviors> 
    </behaviors> 
    </system.serviceModel> 
    <startup> 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/> 
    </startup> 
+0

, если я не передаю параметр, он не бросает любая ошибка .. только что мой параметр NULL, то –

ответ

0

Y ou нужно будет найти фактическую ошибку в файле трассировки. Чтобы создать файл трассировки, сначала создайте папку в диске С, называемые журналы и положить следующий раздел в файле конфигурации ФОС

<system.diagnostics> 
<sources> 
    <source name="System.ServiceModel" switchValue="Information, ActivityTracing" propagateActivity="true"> 
    <listeners> 
     <add name="traceListener" type="System.Diagnostics.XmlWriterTraceListener" initializeData="c:\logs\Traces.svclog" /> 
    </listeners> 
    </source> 
</sources> 
</system.diagnostics> 

Теперь, когда вы называете службы он будет тянуть всю диагностическую информацию в файле трассировки который вы можете дважды щелкнуть и открыть в средстве просмотра MS Trace.

+0

wow !! пусть mi попробует это .. –

+0

ok .. теперь .. У меня есть WCF, а затем я размещаю его в консольном приложении .. это будет в консольном приложении или в конфигурации WCF? –

+0

Он должен быть в конфигурации wcf. –

0

ОК, мой вопрос был сам по себе неполна .. я вывод, это после того, как будет решен вопрос сейчас ..

вопрос в том, что в моем типе контента я не ставил запятой между CONTENTTYPE и кодировкой. .

это то, что я предусмотрено в моем $ .ajax() -

Content-Type: application/json charset=utf-8 

это должно было быть -

Content-Type: application/json; charset=utf-8 

И я никогда не беспокоился о том, чтобы видеть заголовок, пытаясь воспользоваться услугой от скрипача. Я сосредоточился только на формате данных, которые я поставлял

Смежные вопросы