我对 ASMX 服务有疑问。如果我使用 POST 方法,它会返回错误“500 - 内部服务器错误”。但是如果我使用 GET 方法,它工作得很好。我查看了 IIS 日志并看到了这种情况:
2013-01-16 00:00:06 212.158.165.217 GET /service.asmx/GetStopSalesAndQuotes2 Login=xxxxx&Password=xxxxx=&checkPoint=2013-01-08T14:22:56Z 80 -
85.12.229.170 Mozilla/4.0+(compatible;+Windows+NT+5.1;+SV1);+ross-tur.ru;+8-800-100-99-30+(ext.+501); 500 0 0 140
2013-01-16 00:00:06 212.158.165.217 POST /service.asmx - 80 -
62.80.175.194 Mozilla/4.0+(compatible;+MSIE+6.0;+MS+Web+Services+Client+Protocol+4.0.30319.296) 500 0 0 31
我一直在寻找这个问题并试图解决它。
首先,我检查了一个 web.config,但已经创建了必要的标签:
<add name="HttpGet"/>
<add name="HttpPost"/>
其次,我尝试通过在 web.config 中添加一些标签来打开调试模式:
<system.diagnostics>
<trace autoflush="true" />
<sources>
<source name="System.Web.Services.Asmx">
<listeners>
<add name="AsmxTraceFile" type="System.Diagnostics.TextWriterTraceListener" initializeData="local.log" traceOutputOptions="LogicalOperationStack, DateTime, Timestamp, ProcessId, ThreadId" />
</listeners>
</source>
</sources>
<switches>
<add name="System.Web.Services.Asmx" value="Verbose" />
</switches>
</system.diagnostics>
但尚未创建日志。我认为,该应用程序没有权利。
我试图通过为我的站点指定管理员的登录名/密码来授予管理员权限,但它没有解决问题并且仍然没有创建日志。
我尝试调试此错误的其他方法:
- 关闭自定义错误模式并在“true”状态下启用跟踪:
<system.web> <customErrors mode="Off"/> <trace enabled="true" requestLimit="10" pageOutput="false" traceMode="SortByTime" localOnly="false"/> </system.web>
- 还尝试启用 trace 和 policyTrace 选项:
<microsoft.web.services2> <diagnostics> <trace enabled="true"/> <policyTrace enabled="true"/> </diagnostics> <security> <timeToleranceInSeconds>86400</timeToleranceInSeconds> <securityTokenManager type="Megatec.MasterService.TourMLLogic.PasswordProvider, ServiceComponents, Version=1.0.0.0, Culture=neutral" qname="wsse:UsernameToken" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"/> </security> </microsoft.web.services2>
但我没有任何结果。我认为,存在 IIS 配置问题。请帮我。
PS对不起我的英语不好=)