1

私は既存のasp.netWebサイト(私が所有していない)にアクセスしましたが、いくつかのWebサービスを追加するように求められています。すべてのServiceStack.netサンプルは、WebサイトではなくWebアプリケーション用です。

誰かがこれをしましたか?私はたくさんグーグルで検索しましたが、何も見つかりませんでした。

web.configセクションがまったく異なることは知っていますが、機能するものを探しています。

ありがとう。

4

2 に答える 2

2

Global.asaxファイル:

<%@ Application Language="C#" %>
<%@ Import Namespace="ServiceStack.ServiceHost" %>
<%@ Import Namespace="ServiceStack.ServiceInterface" %>

<script runat="server">

[Route("/hello")]
[Route("/hello/{Name}")]
public class Hello
{
   public string Name { get; set; }
}
public class HelloResponse
{
    public string Result { get; set; }
}
public class HelloService : Service
{
    public object Any(Hello request)
    {
        return new HelloResponse { Result = "Hello, " + request.Name };
    }
}
public class HelloAppHost : ServiceStack.WebHost.Endpoints.AppHostBase
{
    //Tell Service Stack the name of your application and where to find your web services
    public HelloAppHost() : base("Russ", typeof(HelloService).Assembly) { }

    public override void Configure(Funq.Container container)
    {
        //register any dependencies your services use, e.g:
        //container.Register<ICacheClient>(new MemoryCacheClient());
    }
} 
void Application_Start(object sender, EventArgs e) 
{
    new HelloAppHost().Init();

}

void Application_End(object sender, EventArgs e) 
{
    //  Code that runs on application shutdown

}

void Application_Error(object sender, EventArgs e) 
{ 
    // Code that runs when an unhandled error occurs

}

void Session_Start(object sender, EventArgs e) 
{
    // Code that runs when a new session is started

}

void Session_End(object sender, EventArgs e) 
{
    // Code that runs when a session ends. 
    // Note: The Session_End event is raised only when the sessionstate mode
    // is set to InProc in the Web.config file. If session mode is set to StateServer 
    // or SQLServer, the event is not raised.

}

</script>

web.configファイルは、Webアプリケーションの例と同じであることがわかりました。タグのそれぞれのセクションを見つけて、それらが属する2行を入力するだけです。

<system.web>
   <httpHandlers>
       <add path="*" type="ServiceStack.WebHost.Endpoints.ServiceStackHttpHandlerFactory, ServiceStack" verb="*"/>
   </httpHandlers>
</system.web>


<system.webServer>
    <handlers>
        <add path="*" name="ServiceStack.Factory"   type="ServiceStack.WebHost.Endpoints.ServiceStackHttpHandlerFactory, ServiceStack" verb="*" preCondition="integratedMode" resourceType="Unspecified" allowPathInfo="true" /> 
    </handlers>
</system.webServer>

参考までに、nugetパッケージを追加し、cmd行の呼び出しを実行しました:install-packageServiceStack。ただし、binには次のファイルが必要です。

サービススタックbinファイル

于 2013-02-11T22:54:23.720 に答える
1

これを新しいASP.NETWebサイトから試してみましたが、機能します。メタデータページは正しく表示されませんでしたが、すべてのエンドポイントは機能します。少しいじくり回すだけで、メタデータページを機能させることができると思います。

nugetを介してServiceStackをインストールしましたが、Webサイトにはプロジェクトファイルがないため、参照の表示が異なります。すべてのdllはbinフォルダーに直接ロードされます。

次に、必要最小限のDTO、サービス、およびAppHostコードを追加すると、機能します。

于 2013-01-31T14:39:24.653 に答える