ということでやってみました!
以下、覚書。
Server環境
・WindowsServer 2008 R2 が動く環境準備
・.net framework 4.0 インストール
・IISの機能有効化
・DefaultWebSite へ アプリケーションの追加
・アプリケーション プール を、ASP.NET v4.0 に変更。
.Net Framework バージョン4.0
パイプラインモード統合
コーディング
ここでは、Visual Studio 2012 で説明
・新しいプロジェクトで、ASP.NET MVC4 Web アプリケーションを選択
・テンプレートは 空 を選択(適当)
・ビューエンジンは Razor を選択(適当)
・こことか、ここを参考に、SignalRのサイトをコーディング
・Global.asaxの作り直し(ここで結構ハマった!以降で説明)
・適当にMVCコントローラ追加(Homeにするとデフォルトで表示される)
・追加したコントローラにビューを追加
・ビューをコーディング(ここで結構ハマった!以降で説明)
・適当にAPIコントローラ追加
・ビルド、発行
・WS2008R2へ配置
ブラウザで見てみよう!!
・・・・動いているはず!
WebAPIもjsonがダウンロードできるはず!
注意した点/ハマった点
デフォルトで自動作成されている Global.asax の Class が違う
いったん消して、追加 → 新しい項目 → グローバル アプリケーション クラス で作成する
名前空間もいくつか足りないので追加する
中身は概ね以下の様な感じ
[csharp] using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Security; using System.Web.SessionState; using System.Web.Routing; using System.Web.Mvc; using System.Web.Http;
namespace TestSignalR { public class Global : System.Web.HttpApplication {
protected void Application_Start(object sender, EventArgs e)
{
AreaRegistration.RegisterAllAreas();
RouteTable.Routes.MapHubs();
WebApiConfig.Register(GlobalConfiguration.Configuration);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
}
}
} [/csharp]
他のイベント(Session_Startとか)は、不要だったら消す
JavaScriptの読み込み先は、Url.Content()を使う
でないとWebサイトのディレクトリ名がキチンと取れない
SignalR のコーディング
当初こっちを参考に作っていたが、プロキシオブジェクトが作れなかった
というか、デバッグでは動くが、WS2008実装時に接続が開始されない
signalrフォルダを探しに行くが、Webサイトのディレクトリが取れない感じ
本来は
http://hogehoge/testsite/signalr/negotiate?…
となるところが、
http://hogehoge/signalr/negotiate?…
で、接続しようとして、JavaScriptが 404 になってしまう模様
以下2点を修正
・オブジェクト作成箇所
[csharp] var connection = $.hubConnection(); var echo = connection.createHubProxy("echo"); [/csharp]
↓
[csharp] var echo = $.connection.echo; [/csharp]
・接続開始箇所
[csharp] connection.start(function () { / 処理 / }); [/csharp]
↓
[csharp] $.connection.hub.start().done(function () { / 処理 / }); [/csharp]
コピペで動くって思っちゃいかんね!!理解しないとっ!
おわりに
.net framework のバージョンを 4.5 で、Sv/Cl統一して環境作成をトライしてたけど、IIS上での認識がうまくいかず断念してました
試行錯誤してたので、もしかしたら 4.5 でも動作できるかもね
結構苦労したので、のちのちの為に本気でメモメモ。