Кажется, что я зафиксировал этот признак путем следования инструкциям от Ubuntu wiki.
Соответствующая часть здесь:
Фиксируют, приостанавливают
, Если приостанавливают, не работает на Вас, существуют различные опции причуды, которые можно попробовать. Посмотрите, что страница справочника для пополудни - приостанавливает за список их всех. Тот, который, как сообщали, помог, является quirk-vbemode-restore, который сохраняет и восстанавливает текущий режим VESA.
Для тестирования его откройте терминал и используйте следующие команды
, sudo пополудни - приостанавливают - quirk-vbemode-restore
, Который должен приостановить систему. Если Вы сможете возобновиться, то Вы захотите настроить Ubuntu для использования этой опции каждый раз, когда Вы приостанавливаете. Сделать этот oOpen терминал и использовать следующие команды:
gksu gedit/etc/pm/config.d/gma500
Добавляет в следующем коде и сохранил файл:
ADD_PARAMETERS = '-quirk-vbemode-restore'
Итак, начнем ...
Создайте свой контракт на обслуживание, который является операцией, которая принимает поток в качестве своего единственного параметра, украсьте его с помощью 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, и вы можете добавить немного безопасности.
Я точно не знаю, чего вы здесь пытаетесь достичь, но в «классическом» 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 и о том, как его использовать.
Марк