向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>
您需要在跟踪文件中找到实际的错误。要创建跟踪文件,首先在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击中服务太…我只关注我提供的数据格式