WCF akışını İleti Sözleşmeleri ile kullanmaya çalışıyorum çünkü akışın yanında ek parametrelere ihtiyacım var.WCF: İleti Sözleşmeleri ile akışı kullanarak
Temel olarak bir dosya yükleme ve indirme hizmeti oluşturuyorum.
sunucu hatası '/' Uygulamasında: Herşey yolunda olup olmadığını kontrol etmek tarayıcıdan hizmet vurmak çalıştığınızda
yazık ki, aşağıdaki hatayı alıyorum. Sözleşmede 'UploadFile' işlemi 'IFileTransferService', SOAP başlıklarına sahip bir MessageContract kullanır. SOAP başlıkları, None MessageVersion tarafından desteklenmez.
Ne yazık ki bunun için googling yapmak bana önemli bir sonuç vermedi. Bana yardım edebilir misiniz? Burada servisin detayları (indirme bölümünden alan nedeni için çıkardım).
<customBinding>
<binding name="customHttpBindingStream">
<textMessageEncoding messageVersion="Soap12" />
<httpTransport transferMode="Streamed" maxReceivedMessageSize="2147483647"/>
</binding>
</customBinding>
UPDATE:
[ServiceContract(Namespace = "http://www.acme.org/2009/04")]
public interface IFileTransferService
{
[OperationContract(Action = "UploadFile")]
void UploadFile(FileUploadMessage request);
}
[MessageContract]
public class FileUploadMessage
{
[MessageHeader(MustUnderstand = true)]
public FileMetaData Metadata { get; set; }
[MessageBodyMember(Order = 1)]
public Stream FileByteStream { get; set; }
}
[DataContract(Namespace = "http://schemas.acme.org/2009/04")]
public class FileMetaData
{
[DataMember(Name="FileType", Order=0, IsRequired=true)]
public FileTypeEnum fileType;
[DataMember(Name="localFilename", Order=1, IsRequired=false)]
public string localFileName;
[DataMember(Name = "remoteFilename", Order = 2, IsRequired = false)]
public string remoteFileName;
}
Ben basicHttpBinding değil olumlu etkisi ile bağlayıcı bir customhttp hem kullanmaya çalıştık İnternet üzerindeki kaynaklara o MessageContracts ile akış gerçekten mümkün olmalıdır gibi görünüyor. MSDN (Large Data and Streaming) örneğin bakınız: Ben de dosya yükleme hizmetlerini gerçekleştirerek insanlardan blog yayınlarını görmüş ve ben (örneğin here için) bir araya getirmek için çalışıyorum ne çok benzer indirmiş olan
Programming Model for Streamed Transfers
The programming model for streaming is straightforward. For receiving streamed data, specify an operation contract that has a single Stream typed input parameter. For returning streamed data, return a Stream reference. [...] This rule similarly applies to message contracts. As shown in the following message contract, you can have only a single body member in your message contract that is a stream. If you want to communicate additional information with the stream, this information must be a carried in message headers. The message body is exclusively reserved for the stream content.
[MessageContract]
public class UploadStreamMessage
{
[MessageHeader]
public string appRef;
[MessageBodyMember]
public Stream data;
}
.
GÜNCELLEME 2 Bir basicHttpBinding ile barındırma hizmeti küçük konsol ve kendini yaratma denedim ve orada bir cazibe gibi çalışır. Sorunun IIS üzerinde barındırma olabileceğine inanmaya başlıyorum. Herhangi bir fikir?
UPDATE 3 Kendi yanıtıma bakın.
"MessageBodyMember" özniteliğinde "MessageBodyMember" özniteliğinde gereksiz olduğuna inanıyorum –