Сервис WCF для принятия должности закодировал multipart/form-data

Кажется, что я зафиксировал этот признак путем следования инструкциям от Ubuntu wiki.

Соответствующая часть здесь:

Фиксируют, приостанавливают

, Если приостанавливают, не работает на Вас, существуют различные опции причуды, которые можно попробовать. Посмотрите, что страница справочника для пополудни - приостанавливает за список их всех. Тот, который, как сообщали, помог, является quirk-vbemode-restore, который сохраняет и восстанавливает текущий режим VESA.

Для тестирования его откройте терминал и используйте следующие команды

, sudo пополудни - приостанавливают - quirk-vbemode-restore

, Который должен приостановить систему. Если Вы сможете возобновиться, то Вы захотите настроить Ubuntu для использования этой опции каждый раз, когда Вы приостанавливаете. Сделать этот oOpen терминал и использовать следующие команды:

gksu gedit/etc/pm/config.d/gma500

Добавляет в следующем коде и сохранил файл:

ADD_PARAMETERS = '-quirk-vbemode-restore'

32
задан Tolga Evcimen 10 January 2014 в 11:21
поделиться

2 ответа

Итак, начнем ...

Создайте свой контракт на обслуживание, который является операцией, которая принимает поток в качестве своего единственного параметра, украсьте его с помощью WebInvoke, как показано ниже

[ServiceContract]
public interface IService1 {

    [OperationContract]
    [WebInvoke(
        Method = "POST",
        BodyStyle = WebMessageBodyStyle.Bare,
        UriTemplate = "/Upload")]
    void Upload(Stream data);

}

Создайте класс ...

    public class Service1 : IService1 {

    public void Upload(Stream data) {

        // Get header info from WebOperationContext.Current.IncomingRequest.Headers
        // open and decode the multipart data, save to the desired place
    }

И конфигурация для приема потоковых данных и максимальный размер

<system.serviceModel>
   <bindings>
     <webHttpBinding>
       <binding name="WebConfiguration" 
                maxBufferSize="65536" 
                maxReceivedMessageSize="2000000000"
                transferMode="Streamed">
       </binding>
     </webHttpBinding>
   </bindings>
   <behaviors>
     <endpointBehaviors>
       <behavior name="WebBehavior">
         <webHttp />         
       </behavior>
     </endpointBehaviors>
     <serviceBehaviors>
       <behavior name="Sandbox.WCFUpload.Web.Service1Behavior">
         <serviceMetadata httpGetEnabled="true" httpGetUrl="" />
         <serviceDebug includeExceptionDetailInFaults="false" />
       </behavior>
     </serviceBehaviors>
   </behaviors>
   <services>     
     <service name="Sandbox.WCFUpload.Web.Service1" behaviorConfiguration="Sandbox.WCFUpload.Web.Service1Behavior">
      <endpoint 
        address=""
        binding="webHttpBinding" 
        behaviorConfiguration="WebBehavior"
        bindingConfiguration="WebConfiguration"
        contract="Sandbox.WCFUpload.Web.IService1" />
    </service>
  </services>
 </system.serviceModel>

Также в System.Web увеличьте объем данных, разрешенный в System.Web

<system.web>
        <otherStuff>...</otherStuff>
        <httpRuntime maxRequestLength="2000000"/>
</system.web>

Это только основы, но позволяет добавить метод Progress для отображения индикатора выполнения ajax, и вы можете добавить немного безопасности.

61
ответ дан 27 November 2019 в 20:32
поделиться

Я точно не знаю, чего вы здесь пытаетесь достичь, но в «классическом» WCF на основе SOAP нет встроенной поддержки для захвата и обработки данных сообщений формы. Вам придется сделать это самостоятельно.

С другой стороны, если вы говорите о WCF на основе REST с webHttpBinding, у вас, безусловно, могут быть методы службы, украшенные атрибутом [WebInvoke ()], который будет вызываться с помощью метода HTTP POST.

    [WebInvoke(Method="POST", UriTemplate="....")]
    public string PostHandler(int value)

Шаблон URI будет определять URI, который будет использоваться там, где должен идти HTTP POST. Вам нужно будет подключить это к своей форме ASP.NET (или к тому, что вы используете для публикации).

Чтобы получить отличное введение в WCF в стиле REST, посмотрите серию ролей Аарона Сконнарда о стартовом наборе WCF REST и о том, как его использовать.

Марк

1
ответ дан 27 November 2019 в 20:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: