2

servicestackを使用してファイルをWebサービスに投稿する方法を理解しようとしています。クライアントに次のコードがあります

Dim client As JsonServiceClient = New JsonServiceClient(api)
Dim rootpath As String = Server.MapPath(("~/" + "temp"))
Dim filename As String = (Guid.NewGuid.ToString.Substring(0, 7) + FileUpload1.FileName)

rootpath = (rootpath + ("/" + filename))

FileUpload1.SaveAs(rootpath)

Dim fileToUpload = New FileInfo(rootpath)
Dim document As AddIDVerification = New AddIDVerification

document.CountryOfIssue = ddlCountry.SelectedValue
document.ExpiryDate = DocumentExipiry.SelectedDate
document.VerificationMethod = ddlVerificationMethod.SelectedValue

Dim responseD As MTM.DTO.AddIDVerificationResponse = client.PostFileWithRequest(Of DTO.AddIDVerificationResponse)("http://localhost:50044/images/", fileToUpload, document)

しかし、何をしても「メソッドは許可されていません」というエラーメッセージが表示されます。現時点では、サーバーコードは次のように記述されています

Public Class AddIDVerificationService
    Implements IService(Of DTO.AddIDVerification)

    Public Function Execute(orequest As DTO.AddIDVerification) As Object Implements ServiceStack.ServiceHost.IService(Of DTO.AddIDVerification).Execute
        Return New DTO.AddIDVerificationResponse With {.Result = "success"}
    End Function
End Class

ご覧のとおり、サーバーでファイルを処理しようとはしていません。クライアントをテストして、実際にファイルをサーバーに送信できることを確認したいだけです。私が間違っていることについて何か考えはありますか?

4

1 に答える 1

1

まず、ServiceStack の古い API を使用しており、現在は廃止されています。将来のサービスを作成するために、 ServiceStack の新しい APIに移行することを検討してください。

ファイルのアップロードを処理する例については、 ServiceStack の RestFilesサンプル プロジェクトを参照してください。

foreach (var uploadedFile in base.RequestContext.Files)
{
    var newFilePath = Path.Combine(targetDir.FullName, uploadedFile.FileName);
    uploadedFile.SaveTo(newFilePath);
}

注入された を調べることで、アップロードされたファイルのコレクションにアクセスできますRequestContext

ファイルのアップロードの例は、RestFiles 統合テストに含まれています。

var client = new JsonServiceClient(api);
var fileToUpload = new FileInfo(FilesRootDir + "TESTUPLOAD.txt");
var response = restClient.PostFile<FilesResponse>(
    "files/Uploads/",fileToUpload,MimeTypes.GetMimeType(fileToUpload.Name));
于 2012-12-16T11:10:43.913 に答える