【发布时间】:2018-11-30 06:05:47
【问题描述】:
Windows Server 2012 - IIS 8.x
我在 IIS 中部署了一个 WCF Web 服务 (DLL),它支持 SOAP 和 REST over https。 Comodo 为 SSL 安装了一个证书。
当我在 C# 应用程序中为服务创建代理时,一切正常。此外,当我从浏览器或 Postman 调用大多数 REST 方法时,它们也可以正常工作。
但有一些 REST 方法无一例外地失败。在 Chrome 浏览器中,我收到一条错误消息:“无法访问此站点。”在 Postman 中,我收到一条错误消息:“无法得到任何响应。”
当我检查 WCF 服务中的代码时,我可以看到该方法被调用并实际执行,没有任何异常,但没有返回任何内容。我还检查了 IIS 日志,似乎没有发现任何错误。
这是一个可以正常工作的方法示例:
[OperationContract]
[WebGet(ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped, UriTemplate = "/GetActivityRules?agencyID={agencyID}")]
List<ActivityRule> GetActivityRules(int agencyID);
然而,这个方法失败了:
[OperationContract]
[WebGet(ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped, UriTemplate = "/GetActivity?agencyID={agencyID}&userID={userID}&date={date}&view={view}")]
List<Activity> GetActivity(int agencyID, int userID, string date, string view);
以前有没有人经历过这种情况,或者知道为什么会发生这种情况或如何最好地排除故障?
更新 #1
我向 GetActivity 函数添加了代码,该函数在每次调用时都会写入日志文件。我可以看到函数每次都正确执行而没有错误,但仍然没有响应。让我想知道问题是否与 WCF 无关。我还在网络配置中添加了一个跟踪侦听器,但该文件永远不会被创建。
<system.diagnostics>
<sources>
<source name="System.ServiceModel"
switchValue="Information, ActivityTracing"
propagateActivity="true">
<listeners>
<add name="traceListener"
type="System.Diagnostics.XmlWriterTraceListener"
initializeData= "C:\Samadhi\TraceLog.svclog" />
</listeners>
</source>
</sources>
</system.diagnostics>
更新 #2
我花了一周的时间来搜索、阅读和检查所有我可能做的事情,但没有结果。我向 Microsoft 提出了一个支持问题,该问题已升级到他们的一位高级工程师。他们花了两天时间研究这个问题,但仍然没有解决方案。他们告诉我他们以前从未见过这个!
【问题讨论】:
-
我在 GetActivity 函数中添加了代码,该函数每次调用时都会写入日志文件,我可以看到该函数每次都正确执行而没有错误,但仍然没有响应。让我想知道问题是否与 WCF 无关。