Загрузить файл в WCF с помощью RestSharp - PullRequest
0 голосов
/ 21 мая 2019

Я искал это, но не нашел ответа. Мне нужно загрузить файл (изображение или PDF) в службу REST WCF с помощью RestSharp. Я использовал метод AddFile (), но служба не работает (я добавил точку останова в самой первой строке метода), а возвращаемый ответ - пустая строка.

Я пробовал оба байта [] и поток. Веб-сервисы:

[OperationContract]
[WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.WrappedRequest, RequestFormat = WebMessageFormat.Json,
    ResponseFormat = WebMessageFormat.Json)]
void NotesAttachment(Stream input);

Пожалуйста, мне нужен пример как для сервиса, так и для того, как позвонить с клиента.

Использование C # 4.5.1 в VS 2015.

1 Ответ

0 голосов
/ 21 мая 2019

Пожалуйста, обратитесь к моему примеру
IServcie1.cs

[OperationContract]
[WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
Task UploadStream(Stream stream);

Service1.svc.cs

public async Task UploadStream(Stream stream)
        {
            using (stream)
            {
                using (var file = File.Create(Path.Combine(HostingEnvironment.MapPath("~/Uploads"), Guid.NewGuid().ToString() + ".png")))
                {
                    await stream.CopyToAsync(file);
                }
            }
        }

Web.config

      <system.serviceModel>
    <bindings>
      <webHttpBinding>
        <binding name="httpbinding" maxBufferPoolSize="2147483647" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647">
          <security mode="None">
          </security>
          <readerQuotas maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxDepth="2147473647" maxNameTableCharCount="2147483647" maxStringContentLength="2147483647"/>
        </binding>
        <binding name="mybinding" maxBufferPoolSize="2147483647" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647">
          <security mode="Transport">
            <transport clientCredentialType="None"></transport>
          </security>
          <readerQuotas maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxDepth="2147473647" maxNameTableCharCount="2147483647" maxStringContentLength="2147483647"/>
        </binding>
      </webHttpBinding>
    </bindings>
    <behaviors>
      <serviceBehaviors>
        <behavior>
          <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/>
          <serviceDebug includeExceptionDetailInFaults="true"/>
        </behavior>
      </serviceBehaviors>
      <endpointBehaviors>
        <behavior>
          <webHttp />
        </behavior>
      </endpointBehaviors>
    </behaviors>
    <protocolMapping>
      <!--http and https are all supported.-->
      <add binding="webHttpBinding" scheme="http" bindingConfiguration="httpbinding" />
      <add binding="webHttpBinding" scheme="https" bindingConfiguration="mybinding"/>
    </protocolMapping>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
  </system.serviceModel>

Пример вызова клиента.Возьмите в качестве примера почтальона.
enter image description here Не стесняйтесь, дайте мне знать, если я могу чем-нибудь помочь.

...