エンコードされたフォームポストmultipart/form-data
を受け入れるWCFサービスのことを知っている人、またはもっと良い例はありますか? Webページからのファイルのアップロード?
グーグルで空っぽになりました。
タ、アリ
だから、ここに行く...
以下のように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>
これは単なる基本ですが、Ajaxプログレスバーを表示するProgressメソッドを追加できるため、セキュリティを追加したい場合があります。
ここで何を達成しようとしているのか正確にはわかりませんが、フォームポストデータをキャプチャして処理するための「クラシック」SOAPベースのWCFには組み込みのサポートがありません。あなた自身でそれをしなければならないでしょう。
一方、webHttpBindingを使用したRESTベースのWCFについて話している場合、HTTP POSTメソッド。
[WebInvoke(Method="POST", UriTemplate="....")]
public string PostHandler(int value)
URIテンプレートは、HTTP POSTを配置する必要がある場所で使用するURIを定義します。これをASP.NETフォーム(または実際に実行するために使用しているもの)にフックする必要があります役職)。
RESTスタイルのWCFのすばらしい紹介については、WCFのアーロンスコナードの スクリーンキャストシリーズ をチェックしてくださいRESTスターターキットとその方法これを使って。
マーク