向WCF函数传递json参数给出错误"服务器在处理请求时遇到错误.有关更多详细信息,请参阅服务器日志

本文关键字:错误 服务器 遇到 请求 日志 请参阅 详细信息 处理 参数 json 出错 | 更新日期: 2023-09-27 18:02:32

我有一个WCF服务,它接受一个字符串参数。当我试图调用它时,我得到一个错误"服务器在处理请求时遇到了错误。有关详细信息,请参阅服务器日志。我也通过从提琴手传递json请求来复制这个问题。只是为了确保我的jQuery $.ajax()没有问题。

这是我的serviceconcontract, WCF类和配置-

服务合同-

[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>

向WCF函数传递json参数给出错误"服务器在处理请求时遇到错误.有关更多详细信息,请参阅服务器日志

您需要在跟踪文件中找到实际的错误。要创建跟踪文件,首先在c驱动器中创建一个名为logs的文件夹,并将以下部分放入wcf配置文件

<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跟踪查看器

好吧,我的问题本身就不完整。在问题解决后,我得出这个结论。

问题是,在我的内容类型中,我没有在contentType和charset之间放置分号..

这是我在$.ajax()中提供的内容-

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

必须是-

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

而且,我从来没有费心去看标题,而试图从fiddler击中服务太…我只关注我提供的数据格式