Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 通过过帐字符串测试WCF服务_C#_Wcf_Fiddler - Fatal编程技术网

C# 通过过帐字符串测试WCF服务

C# 通过过帐字符串测试WCF服务,c#,wcf,fiddler,C#,Wcf,Fiddler,我试图通过使用fiddler发布一个字符串值来测试我的示例WCF服务,但它返回了一个405错误。下面是我的代码 [OperationContract] [WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat= WebMessageFormat.Json, UriTemplate = "/json/process", BodyStyle = WebMessageBodyStyle.Bare)

我试图通过使用fiddler发布一个字符串值来测试我的示例WCF服务,但它返回了一个405错误。下面是我的代码

[OperationContract]
[WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat= WebMessageFormat.Json, UriTemplate = "/json/process", BodyStyle = WebMessageBodyStyle.Bare)]
string ProcessOrderJSON(string request)
{
    return "test json process";
}
下面是我的fiddler数据

URL: localhost:3173/json/process

User-Agent: Fiddler
content-type: application/json
Host: localhost:3173

RequestBody:
"testdata"
下面是我的配置文件。请帮我找出我的问题。提前谢谢

<?xml version="1.0" encoding="utf-8"?>
<configuration>

  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
    <sectionGroup name="EmailSettings">
      <section name="Default" type="System.Configuration.NameValueSectionHandler" />
      <section name="Appraisal" type="System.Configuration.NameValueSectionHandler" />
      <section name="CustomerService" type="System.Configuration.NameValueSectionHandler" />
      <section name="TestAccounts" type="System.Configuration.NameValueSectionHandler" />
    </sectionGroup>
  </configSections>
  <system.web>
    <compilation debug="true" targetFramework="4.0" />
   <customErrors mode="Off" />
  </system.web>

  <system.webServer>
    <handlers>
      <remove name="svc-Integrated-4.0" />
      <add name="svc-Integrated-4.0" path="*" verb="*" type="System.ServiceModel.Activation.ServiceHttpHandlerFactory, System.ServiceModel.Activation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" resourceType="Unspecified" requireAccess="Script" preCondition="integratedMode,runtimeVersionv4.0" />
    </handlers>
    <validation validateIntegratedModeConfiguration="false" />
    <modules runAllManagedModulesForAllRequests="true">
      <add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
    </modules>
    <directoryBrowse enabled="true" />
  </system.webServer>

  <system.serviceModel>
  <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
   <behaviors>
      <serviceBehaviors>
        <behavior name="MEXGET">
          <serviceMetadata httpGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="true" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <services>
      <service behaviorConfiguration="MEXGET" name="Appraisal.OrderService.WCF.OrderServiceMex">
              </service>
    </services>
    <standardEndpoints>
      <webHttpEndpoint>
        <standardEndpoint name="" helpEnabled="true" automaticFormatSelectionEnabled="true" transferMode="Streamed" maxBufferPoolSize="2147483647" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647">
          <readerQuotas maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxDepth="1000" maxNameTableCharCount="16384" />
        </standardEndpoint>
      </webHttpEndpoint>
    </standardEndpoints>
  </system.serviceModel>

  <log4net>
    <appender name="FileAppender" type="log4net.Appender.FileAppender">
      <param name="File" value="OrderService.log" />
      <!-- Example using environment variables in params -->
      <!-- <param name="File" value="${TMP}\\ApplicationKit.log" /> -->
      <param name="AppendToFile" value="true" />
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="%d %-2p - %m%n" />
      </layout>
      <filter type="log4net.Filter.LevelRangeFilter">
        <LevelMin value="INFO" />
        <LevelMax value="INFO" />
      </filter>
      <filter type="log4net.Filter.DenyAllFilter" />
    </appender>

    <appender name="ErrorsFileAppender" type="log4net.Appender.FileAppender">
      <param name="File" value="ErrorOrderService.log" />
      <!-- Example using environment variables in params -->
      <!-- <param name="File" value="${TMP}\\ApplicationKit.log" /> -->
      <param name="AppendToFile" value="true" />
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="%d [%t] %-2p %c [%x] - %m%n" />
      </layout>
      <filter type="log4net.Filter.LevelRangeFilter">
        <levelMin value="ERROR" />
        <LevelMax value="FATAL" />
      </filter>
      <filter type="log4net.Filter.DenyAllFilter" />
    </appender>

    <root>
      <level value="ALL" />
      <appender-ref ref="FileAppender" />
      <appender-ref ref="ErrorsFileAppender" />
    </root>
  </log4net>
    <runtime>
          <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
                  <dependentAssembly>
                          <assemblyIdentity name="Common.Logging" publicKeyToken="af08829b84f0328e" culture="neutral" />
                          <bindingRedirect oldVersion="0.0.0.0-2.3.1.0" newVersion="2.3.1.0" />
                  </dependentAssembly>
            </assemblyBinding>
      </runtime>

</configuration>

405 HTTP状态代码表示服务不支持该请求方法

使用WebInvoke属性装饰的服务方法及其设置为POST的方法属性。 如果使用GET方法调用服务方法,则返回此状态代码


使用POST更改您的请求方法。

创建一个简单的控制台应用程序,并使用WebClient访问WCF rest服务

private static void PlaceOrder()
{
   string data = "your string"; 

   WebClient webClient = new WebClient();            
   webClient.Headers["Content-type"] = "application/json";            
   webClient.Encoding = Encoding.UTF8;
   webClient.UploadString("http://localhost:61090/OrderService.svc
                        /PlaceOrder", "POST", data);              
}

您在配置文件中遇到的问题,需要显式添加webHttp端点,以下是最小配置文件的示例:

<system.serviceModel>
 <services>
  <service name="WcfServiceLibrary3.Service1">
    <host>
      <baseAddresses>
        <add baseAddress = "http://localhost:8733/" />
      </baseAddresses>
    </host>
    <endpoint address="web" binding="webHttpBinding" contract="WcfServiceLibrary3.IService1" behaviorConfiguration="webBehavior"/>
  </service>
 </services>
 <behaviors>
  <endpointBehaviors>
    <behavior name="webBehavior">
      <webHttp />
    </behavior>
  </endpointBehaviors>
 </behaviors>
</system.serviceModel>

在这种情况下,URL将是http://localhost:8733/web/json/process

您能告诉我您的项目类型吗?是WCF服务库还是WCF服务应用程序?请共享您的*.config文件这是一个WCF服务库。。我用我的.config编辑我的问题没有包含配置文件详细信息的编辑?我只是添加了我的配置文件。。很抱歉耽搁了。我正在使用POST in方法,我没有使用任何get。我注意到,您的方法体也声明为添加了OperationContract属性。但您应该在服务接口中添加OperationContract属性。并且不能在服务接口中声明方法体。你确定你发布了正确的代码吗?我尝试了上面的配置文件,当我尝试在UTL上面打开时,它在“/”应用程序中显示服务器错误。找不到资源。