3

自己ホスティング プロジェクトの助けを借りて、ServiceStack がどのように機能するかを学んでいます。セルフホスティング プロジェクトは、IIS 内で魔法が発生しないため、デバッグと理解がはるかに簡単です。

私はこれらの手順に従い、http://www.servicestack.net/mythz_blog/?p=785を読み、それらを逆方向に適用しました。

Docs ではうまくいきましたが、SocialBootstrapApi ではうまくいきませんでした。Global.asax の Application_Start() のコードが問題だと思います

ServiceStack ドキュメントの手順

  • ServiceStack Docs サンプル プロジェクトをダウンロードする

  • 新しいコンソール プロジェクトを作成します (Docs はまだ 3.5 であるため、.Net 3.5)。

  • 古い W​​eb プロジェクトから web.config を除くすべてのファイルをコピーします。(私は最初にドラッグ アンド ドロップを使用しましたが、それはファイルを移動しただけで、.csproj ファイルを更新しなかったため、エディターを使用していくつかの ItemGroup セクションをコピーする必要がありました。)

  • AppHost を別のクラス ファイルに移動し、AppHostHttpListenerBase から継承するように変更

  • RazorRockstars プロジェクトから Programs.cs ファイルをコピーします。

  • baseUrl を変更します。 var baseUrl = "http://localhost:2001/"; // ConfigUtils.GetAppSetting("WebHostUrl");

  • RazorRockstars プロジェクトから app.config ファイルをコピーします (ただし、これは必要ありませんでした)。

  • コンソール プロジェクトの出力パスを .\ に変更します。そうしないと PageManager.Init が間違ったパスを取得し、ほとんどのファイルが見つからないためです。

  • これを行ったら、完全な ServiceStack ソース コードをダウンロードしてデバッグ モードで再コンパイルし、Docs プロジェクト内のすべての ServiceStack 参照を新しくコンパイルされたものに置き換えます。これで、すべての ServiceStack コードを簡単にステップ実行し、ブレークポイントなどを設定して、何がいつ起こっているかを理解できます。コンソール プロジェクトには他にもいくつかの利点があります。起動が速く、エディット コンティニュが頻繁に機能します。

SocialBootstrapApi については、/ and を除いて同じことを行いました

  • web.config の名前を app.config に変更しました

  • コメントアウト // [assembly: WebActivator.PreApplicationStartMethod(typeof(SocialBootstrapApi.AppHost), "Start")]

  • これで、プロジェクトの通常の ServiceStack 部分が機能しますが、URL には最初の /api/ がありません。

  • Application_Start() を Global.asax から AppHost.Configure に移動しようとしました ==>> 開始を拒否します

4

1 に答える 1

2

ASP.NET MVCは、自己ホスト型HttpListenerでホストすることはできません(ASP.NETに結合されているため)が、ServiceStackは、自己ホスト型HttpListenerアプリ内でのRazorおよびMarkdownビューエンジンのホストをサポートしています。

Razor Rockstars Webサイトは、ServiceStackのRazorおよびMarkdownビューエンジンサポートのショーケースWebサイトです。razor-console.servicestack.netは、HttpListenerセルフホストでホストされているのと同じWebサイトです。RazorRockstarsのソースコードはRazorRockstarsとともにGitHubにあります。SelfHostの例には、razor-consoleのソースコードが含まれています。セルフホストWebサイトで覚えておく必要があることの1つは、RazorビューページのVS.NETでのビルドアクションを[新しい場合はコピー]に設定して、ビューが/binディレクトリにコピーされ、実行時にServiceStackで検出できるようにする必要があることです。

于 2012-12-31T07:53:57.340 に答える