0

我有一个 WCF RESTful Web 服务(使用 webHttpBinding),当我尝试在其上调用 Web 服务方法时返回 400。

如果我转到 mywebservice.svc,我会得到标准的 WCF Web 服务页面。但是如果我去 /mywebservice.svc/some/rest/service/url,我会得到一个 Http 400。每次。参数或被调用的方法无关紧要。

以下是我们目前所看到的:

  1. 查看 IIS Express 日志。没有 Win32 状态(即状态 0)与 HTTP 状态一起出现
  2. 打开 WCF 日志记录。WCF 没有记录任何内容,这表明该请求甚至没有达到那么远。
  3. 尝试调试我们的方法,但断点永远不会被命中。
  4. 尝试在 Cassini 下运行该服务。结果相同(http 400)。
  5. 在有问题的机器上尝试了另一个用户。结果相同。

我们知道这适用于其他机器。有问题的机器在 Win XP 上使用 VS 2010。我们正在使用 WCF 4.0

我知道这里没什么可做的,因为我们没有特定的错误消息,但是鉴于我们已经查看的位置,是否有人对下一步查看位置有任何建议?

更新:添加的代码示例 这是我的一种方法的定义,以及该方法的实现。

[ServiceContract]
public interface IMAMDataWebService
{
    [WebGet(UriTemplate = "/Contracts/{taxID}", ResponseFormat = WebMessageFormat.Json)]
    [OperationContract]
    ContractCollection Contracts(string taxID);
}

public ContractCollection Contracts(string taxID)
{
    ContractCollection contracts = new ContractCollection();

    try
    {
        contracts = _contractService.GetContracts(taxID);
    }
    catch (RstsException rEx)
    {
        if (!rEx.Logged)
            _errorLogger.LogError(rEx);

            WebFault.ThrowFault(rEx, HttpStatusCode.InternalServerError);
        }
        catch (Exception ex)
        {
            RstsException rEx = new RstsException(ex);
            _errorLogger.LogError(rEx);

            WebFault.ThrowFault(rEx, HttpStatusCode.InternalServerError);
        }

        if (contracts.Count == 0)
        {
            WebFault.ThrowFault(Strings.ObjectNotFound, HttpStatusCode.NotFound);
        }

        return contracts;
    }

我用网络浏览器调用它,即 MAMDataWebService.svc/Contracts/123456789

我确信这一定是权限问题,但我不确定是什么问题。它适用于我们所有使用 VS 2010 的 Win 7 机器,但少数用户仍然有 XP,他们就是问题所在。但是没有任何错误,很难说出发生了什么。

4

0 回答 0