2017-05-05 8 views
2

リクエストでStreamを使用して単純なServiceStackサービスを作成すると、サービスメソッドのメタデータページにアクセスできません。要求にストリームを持つServiceStackサービスでメタデータページが破損する

サービス自体が動作するように表示されます(私は郵便配達を使用してhttp://localhost:12345/uploadStreamにストリームを送信することができますし、私は余分なコードのビットでOK serviceメソッドでストリームをデシリアライズすることができます。)

私は、.NETのコアを使用していますし、 Servicestack ...

完全レポ:

using Funq; 
using Microsoft.AspNetCore.Builder; 
using Microsoft.AspNetCore.Hosting; 
using Microsoft.AspNetCore.Http; 
using Microsoft.Extensions.DependencyInjection; 
using Microsoft.Extensions.Logging; 
using ServiceStack; 
using ServiceStack.Web; 
using System; 
using System.IO; 
using System.Threading.Tasks; 

namespace ServiceStackCoreTest 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      IWebHost host = new WebHostBuilder() 
       .UseKestrel() 
       .UseContentRoot(Directory.GetCurrentDirectory()) 
       .UseStartup<Startup>() 
       .UseUrls("http://*:12345/test/") 
       .Build(); 
      host.Run(); 
     } 
    } 

    public class Startup 
    { 
     public void ConfigureServices(IServiceCollection services){ } 

     public void Configure(IApplicationBuilder app, IHostingEnvironment env) 
     { 
      app.ApplicationServices.GetService<ILoggerFactory>(); 
      app.UseServiceStack((AppHostBase)Activator.CreateInstance<AppHost>()); 

      app.Run((RequestDelegate)(context => (Task)Task.FromResult<int>(0))); 
     } 
    } 

    public class AppHost : AppHostBase 
    { 
     public AppHost() : base("Test Service", typeof(Program).GetAssembly()){ } 

     public override void Configure(Container container){ } 
    } 

    public class MyService : Service 
    { 
     public TestResponse Any(TestRequest request) 
     { 
      return new TestResponse(); 
     } 
    } 

    [Route("/uploadStream", "POST", Summary = "Upload stream")] 
    public class TestRequest : IReturn<TestResponse>, IRequiresRequestStream 
    { 
     public Stream RequestStream { get; set; } 
    } 

    public class TestResponse{ } 
} 

私の完全なcsproj(Iは、Windows 10/VS2017を使用しています)...

<Project Sdk="Microsoft.NET.Sdk"> 

    <PropertyGroup> 
    <OutputType>Exe</OutputType> 
    <TargetFramework>netcoreapp1.1</TargetFramework> 
    </PropertyGroup> 

    <ItemGroup> 
    <PackageReference Include="Microsoft.AspNetCore.Hosting" Version="1.1.1" /> 
    <PackageReference Include="ServiceStack.Core" Version="1.0.40" /> 
    <PackageReference Include="ServiceStack.Kestrel" Version="1.0.40" /> 
    </ItemGroup> 

</Project> 

メタデータページを参照すると、操作のリストが表示されますが、 'TestRequest'メソッドの隣にある 'XML'、 'JSON'または 'JSV'をクリックすると、エラーERR_INCOMPLETE_CHUNKED_ENCODINGクロム(エッジは何も報告しません)、私の出力ウィンドウでは、私はException thrown: 'System.MemberAccessException' in System.Private.CoreLib.ni.dllを参照してください。奇妙なことに、「CSV」をクリックすると私にメタデータページが表示されます。

私のServiceStackプロジェクトでサービスメソッドを間違って作成していますか?

答えて

3

.NETコアパッケージには、this commitから解決されるはずの抽象クラス(Stream)のインスタンスを作成できないという問題がありました。

この変更は、現在NuGetで利用可能なv1.0.41*.Coreパッケージから入手できます。

+2

賢い、ありがとう(もう一度!)あなたの助けに感謝します。私はこれを答えとしてマークしましたが、来週仕事に戻ったときにテストするだけです。 – Jay

関連する問題