IIS Express为WCF RESTful服务返回HTTP 400

时间:2013-06-24 16:38:29

标签: visual-studio-2010 wcf iis-express

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

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

这是我们到目前为止所看到的:

  1. 查看IIS Express日志。与HTTP状态
  2. 一起没有Win32状态(即状态0)
  3. 启用WCF日志记录。 WCF没有记录任何内容,这表明请求甚至没有达到目标。
  4. 尝试调试我们的方法,但断点永远不会被击中。
  5. 尝试在Cassini下运行服务。相同的结果(http 400)。
  6. 在问题机器上尝试了另一个用户。结果相同。
  7. 我们知道这适用于其他机器。有问题的机器在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而且他们是那些但是没有任何错误,很难说出发生了什么。

0 个答案:

没有答案