0

操作の結果を WCF サービスからクライアントに渡そうとしています。

私のサービスは次のようになります

        [OperationContract]
        [WebInvoke(UriTemplate = "Upload/{metadata}", BodyStyle = WebMessageBodyStyle.Bare, ResponseFormat = WebMessageFormat.Json)]
        void Upload(string metadata, Stream stream);

        public void Upload(string metadata, Stream stream)
        {
...
            }
            catch (Exception e)
            {
                WebOperationContext.Current.OutgoingResponse.StatusCode = System.Net.HttpStatusCode.BadRequest;
                WebOperationContext.Current.OutgoingResponse.StatusDescription = e.Message;
            }
        }

私のクライアントは...

<form id="fileUploadForm" method="post" enctype="multipart/form-data">
    <div>
        <div>
            <input type="text" id="fileUploadTitle" name="fileUploadTitle" class="m-wrap" />
        </div>
        <div>
            <input type="file" id="postedFile" name="postedFile" class="m-btn" />
        </div>
        <div>
            <input type="button" id="fileUploadButton" name="fileUploadButton" value="Do Upload" class="m-btn" />
        </div>
        <div id="fileUploadResult"></div>
    </div>
</form>

<script type="text/javascript">
    $(function () {
        $("#fileUploadButton").click(function () {
            $('form').ajaxSubmit(
            {
                url: '/_vti_bin/UploadService/UploadService.svc/Upload/' + $("#fileUploadTitle").val(),
                type: 'POST',
                contentType: 'text/plain',
                beforeSubmit: function () {
                    $("#fileUploadResult").html("Uploading...").css("background", "yellow");
                },
                success: function (r, s, x) {
                    $("#fileUploadResult").html("File uploaded").css("background", "lime");
                },
                error: function () {
                    $("#fileUploadResult").html("File not uploaded").css("background", "red");
                }
            })
        });
    });
</script>

問題は、サーバーが例外をスローし、200 以外の StatusCode を設定しているかどうかに関係なく、常に成功が呼び出されることです。

FaultException でも試してみましたが、役に立ちませんでした。

実際には「HTTP/1.1 400」の応答ヘッダー「Response」を取得しますが、呼び出される「エラー」コールバックを取得し、完全なステータス コードを取得したいと考えています...

私が間違っていることについての提案はありますか?

前もって感謝します。

4

1 に答える 1