繁体   English   中英

使用WebGet时WCF服务返回400错误

[英]WCF Service Returns 400 error when using WebGet

我对WCF不太了解。 但是我有一个非常基本的服务正在尝试执行。 我的服务代码如下:

[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]
[ServiceBehavior(IncludeExceptionDetailInFaults = false)]
[ServiceContract]
public class MyService
{
    [OperationContract]
    [WebGet(UriTemplate = "/IsValidRequest")]
    public bool IsValidRequest()
    {
        return true;
    }
}

就像我说的,这是一项非常基本的服务。 当我在浏览器中输入“ http:// localhost:[port] /MyService.svc”时,我看到了服务描述页面。 但是,“ IsValidRequest”没有像我想的那样列出(也许仅在.asmx上发生)。 无论哪种方式,当我在浏览器中输入“ http:// localhost:[port] /MyService.svc/IsValidRequest”时,都不会返回任何内容。 在Fiddler中,我看到出现HTTP 400错误。 但是,没有什么让我对问题可能有什么产生任何怀疑。

有人可以帮我指出正确的方向吗? 谢谢!

使用以下配置(更改名称空间以匹配您的代码)

<services>
  <service name="WcfService1.MyService" behaviorConfiguration="GetBehavior">
    <endpoint address="" binding="webHttpBinding" behaviorConfiguration="WebBehavior"  contract="WcfService1.MyService">

    </endpoint>

  </service>
</services>
<behaviors>
  <serviceBehaviors>
    <behavior name="GetBehavior">

      <serviceDebug includeExceptionDetailInFaults="false"/>
    </behavior>
  </serviceBehaviors>
  <endpointBehaviors>
    <behavior name="WebBehavior">
      <webHttp />          
    </behavior>
  </endpointBehaviors>

</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="false" aspNetCompatibilityEnabled="true"/>

您的.svc文件应如下所示:

<%@ ServiceHost Language="C#" Debug="true" Service="WcfService1.MyService" CodeBehind="MyService.svc.cs" %>

在此处输入图片说明

查看消息的WSDL是无关紧要的,因为正如您在对评论的回复中所说,您希望它是基于REST的服务,而WSDL是SOAP构造。 在此基础上,如果您有<serviceMetadata>行为,则应该删除它,因为这与SOAP元数据有关。

为了诊断这样的问题,您应该打开WCF中的跟踪功能( 这里有一个简短的截屏视频,向您展示了如何做到)。 这应该突出显示处理消息时出现的问题

要连接REST管道而不在服务的配置中添加部分,请在system.serviceModel部分下的配置文件中添加以下内容

<protocolMapping>
  <add scheme="http" binding="webHttpBinding"/>
</protocolMapping>
<behaviors>
  <endpointBehaviors>
    <behavior>
      <webHttp/>
    </behavior>
  </endpointBehaviors>
</behaviors>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM