web 2008 導入 (68) .NET Framework 4 に対応させました

tryiis7 で netfx4 を利用可能にしました。日本の共有鯖では tryiis7 が最初の対応のはず。たぶん。

Visual Studio 2010 で作った ASP.NET 4 アプリの持って行き先が無いなら tryiis7 に載せてください。相変わらず Medium + Socket + Web に制限しているけど。

 

 

VWD Express 2010 で MVC2 を作って tryiis7 にアップします。

webapps\mvc2 物理ディレクトリを /aspnet4 仮想ディレクトリにマッピング

/aspnet4 を「.NET 4 で統合」なアプリに指定。

おめでとうございます

web 2008 導入 (66) netfx4 入れたのでマシン レベルの web.config が二つあるわけですが・・・

 

ASP.NET 練習帳 : Medium 縛りする方法

に書いたコードは

C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG\web.config

だけをエディットし、netfx4 の web.config をエディットしてくれない。

 

WebConfigurationMap のデフォルト コンストラクタでなく

↓のように machine.config と web.config のパスを渡すと、netfx4 の web.config もエディットできるようになった。

/// <param name="v20">netfx2 なら true。netfx4 なら false。</param>
private void ModifyWebSite_Medium_Shibari(MyDirectoryInfo info, bool v20)
{
    var mgr = new ServerManager();
    WebConfigurationMap webConfig = null;
    if (v20)
    {
        webConfig = new WebConfigurationMap(
            @"C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG\machine.config",
            @"C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG\web.config"
            );
    }
    else
    {
        webConfig = new WebConfigurationMap(
            @"C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\machine.config",
            @"C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\web.config"
            );
    }
    Microsoft.Web.Administration.Configuration config = mgr.GetWebConfiguration(webConfig, null);

    _logger.WriteLine(LogType.Information, "Medium 縛り … ");
    ConfigurationSection section1 = config.GetSection("system.web/trust", info.SiteName_Web);
    section1.SetAttributeValue("level", "TryIIS7Medium");
    section1.SetMetadata("lockItem", true);
    mgr.CommitChanges();
    _logger.WriteLine(LogType.Information, "[成功]");
}

 

 
<system.web>
  <trust> 要素がマシン レベルでロックされているので、サイト管理者で接続したらドロップ ダウンがグレー アウトされています。

web 2008 導入 (65) applicationHost.config の中身を秀丸で置換

 

今まで v2 統合、v2 クラシックの二種類有ればよかったけど、

netfx 4 対応するには、

v2 統合、v2 クラシック、v4 統合、v4 クラシックの四種類が必要だ。

 

applicationHost.config の中身を書き換える。

 

● はアカウント名。

左側が旧い名称で、右側が新しい名称。

applicationPool="pool_●_i" →→→ applicationPool="pool_●_v20_i"

applicationPool="pool_●_c" →→→ applicationPool="pool_●_v20_c"

 

 

2010/4/20 追記

PS C:\Users\user2> Get-Content C:\_work\applicationHost.config | foreach {
>> $_ -replace ‘applicationPool="pool_([a-zA-Z0-9]+)_(i|c)"’, ‘applicationPool="pool_$1_v20_$2"’
>> } | Out-File C:\_work\applicationHost.config.3 -Encoding utf8
>>
PS C:\Users\user2>

そのままファイルに落とすと utf16 になるので Out-File で utf8 を指定しています。

web 2008 導入 (64) クラシックで v4.0 なアプリケーション プール

.NET Framework 4 が出たので試し中。

統合で v4.0 なプールは動くのに、クラシック (非統合) で v4.0 なプールが動かない現象に遭遇した。

以下は、クラシックで v4.0 なプールを動かすまでの手順です。

 


/test アプリケーションはクラシック (非統合) で v4.0 なプールを使用。


404.2 嫌がらせですか?


左側ツリーにてサーバーを選択した状態で、中央ペインに存在する ISAPI and CGI Resrictions アイコンをダブルクリック。


Not Allowed を Allowed に変更して差し上げる。

 
applicationHost.config が書き変わりました。


v4.0 で動きました!

以上

web 2008 導入 (63) BugNET 0.7.942 は部分信頼な環境では動かない

BugNET という名前のバグ管理システムを見つけたのでインストールしてみます。

BugNET  Home

BugNET-0.7.942-Install.zip を手元にダウンロードして解凍。

FTP でアップロード

webapps\BugNET を /BugNET にマッピング

/BugNET を統合プールのアプリに指定

App_Data\Database.mdf を /MsSqlDbFiles/BugNET.mdf としてアップロード。

/webapps/BugNET/App_Data/Database.mdf は不要なので削除。

データベースのアタッチ

BugNET.mdf ファイルを DB_BugNET というデータベース名でアタッチ。

手元の web.config を書き換え。DB 接続文字列を変更します。その後 FTP で web.config をアップロード。

/BugNET/Install/Install.aspx にアクセス。。。エラー発生。

うーん。どうも BugNET は部分信頼だと動かないようですね。

Install.aspx problem on godaddy – Installation problems – BugNET

Reporting Functionality – General development – BugNET

あきらめます。

web 2008 導入 (62) IIS 7.0 マネージャにバグ?発見

 

ScrewTurn Wiki 3.0.2.500 が出たのでバージョン アップさせた。

やり方は

http://tryiis7.spaces.live.com/blog/cns!A57DF6C28B81A8C1!1140.entry

に書いてあるのと同じ手順で OK。

3.0.0.333 と 3.0.1.400 で発生するバグが治ってるかどうかはまだチェックしてない。

 

それより、IIS 7.0 マネージャにバグ?を発見したのでメモっておく。


(サーバー単位接続でなく) サイト単位接続してる状態で Logging のアイコンをダブルクリック。

 
右側ペインの Disable/Enable を一度クリックすると中央ペインが灰色(編集不可)になってそれ以降二度と中央ペインは編集できない!

ちなみに、サーバー単位接続している場合は Disable/Enable は期待通りに作用します。

この Disable/Enable は
<configuraion>
    <system.webServer>
        <httpLogging dontLog="false" /> ここに作用します。

HTTP Logging httpLogging  Configuration Reference  The Official Microsoft IIS Site

 

過去にメモったかもしれませんが IIS 7.0 マネージャをサイト単位接続で使うと 「Shared Hosting で使う場合、それってどうなのよ」 的な情報漏れにつながる挙動があったりします。(私が IIS のスキーマを間違って編集したわけではありませんよ。デフォルトで変な挙動するのです)

web 2008 導入 (61) AmpliFeeder あきらめた

AmpliFeeder – Open source lifestream platform

をインストールします。

このアプリ、説明動画が一本あるだけで、ドキュメント(インストール手順書の類)は一切無いのです。

でもどうせおそらくいつものパターンでインストール可能だと思うのでインストールしてみます。

 

インストール

AmpliFeeder_v1.1.zip をダウンロードして手元で解凍。

FTP でサーバーに接続し /webapps/amp/ ディレクトリを作成。

ローカルの AmpliFeeder_v1.1\AmpliFeeder\ ディレクトリの中身をサーバーの /webapps/amp/ ディレクトリにアップロード。

webapps\amp を /amp にマッピング。

/amp をクラシック プールで動くアプリに設定。

http://www.test3.useiis7.net/amp/ にアクセスするとエラー(インストール説明?)が出た。

DB 接続エラー

アップデートのための PING?

インストーラを隠す方法

デフォルト管理者のパスワード

データベースが必要っぽいので「新しいデータベース」

DB_amp を作りました。

AmpliFeeder_v1.1.zip を解凍すると、DB スクリプトが二つ (install.sql と AmpliFeederDatabaseScript.sql) 出てくるけどどちらを使えばいいのだ?

AmpliFeederDatabaseScript.sql を使えば良さそうです。install.sql はログインとユーザーの作成までやっちゃうので駄目。

手元の Management Studio を使ってリモートの SQL Server に接続します。このあたりの情報、何を入力するかは tryiis7 のコンパネのアカウント ページに載ってるのでそちらを参照してください。

DB_amp を選択し、AmpliFeederDatabaseScript.sql を Execute

web.config の AmplifeederDBConnectionString と書いてある行を修正。このあたりの情報も tryiis7 コンパネのアカウント ページに載ってます。

変更前

<add name="AmplifeederDBConnectionString" connectionString="Data Source=YOURDATASOURCE;Database=YOURDATABASE;uid=YOURDATABASEUSER;Pwd=YOURDATABASEUSERPASSWORD;" providerName="System.Data.SqlClient"/>

変更後

面倒なので載せません。

 

http://www.test3.useiis7.net/amp/ に再度アクセスすると DB 接続 OK と出ました。

Register With AmpliPinger をクリックすると OK と出た。

もう一回クリックすると登録済みと出た。

web.config の setup と書いてある行を修正。

編集前
<add key="setup" value="true"/>
編集後
<add key="setup" value="false"/>

 

その後 http://www.test3.useiis7.net/amp/Configure.aspx にアクセスすると・・・まだ設定ページが出る!

信用できないアプリだな。

プールをクラシックから統合に変えても、Configure.aspx が出る。

プールを停止して開始しても Configure.aspx が出る。

web サイトを停止して開始しても Configure.aspx が出る。

というか、このコードはダメでしょ。コメント アウトしてあるのが駄目だし、たとえコメントアウトしてなくてもリダイレクトに従わない User-Agent が来たらどうするのか。例外 catch はしないほうがいいと思うけど。

 

その後少し触ってみて

  • プールは統合ではだめでクラシックを選ぶ必要あり。
  • login.aspx から入る管理ページは使えるが、管理ページの外すなわち普通のページは常に真っ白 javascript error

 

最終的に

サーバーに入れたものをごっそり消しました。

終了

web 2008 導入 (59) ScrewTurn Wiki のバージョン アップ

ScrewTurn Wiki 3.0.0.333 を利用中。再現性のあるバグを見つけたので開発者に報告しようと思ったら、3.0.1.400 を発見。先にバージョン アップをしましょうかね。

 

バージョン アップ作業

3.0.0.333 と 3.0.1.400 を比較し、web.config の内容に変化があるか確認。。。変化なし。

じゃあたぶん簡単だ。


/webapps/_wwwroot2 フォルダを作り、そこに 3.0.1.400 のブツ (約 1,000 個のファイル) をアップロード。


w3wp.exe プロセスをストップして作業中に起動しないようにするため、アプリケーション プールをストップ。

  • /webapps/_wwwroot/web.config ファイルを /webapps/_wwwroot2/ ディレクトリにコピー。
  • /webapps/_wwwroot/ ディレクトリを /webapps/_wwwroot.old/ にリネーム。
  • /webapps/_wwwroot2/ ディレクトリを /webapps/_wwwroot/ にリネーム。

先ほど停止させたアプリケーション プールをスタート。

 
確認します。。。Your Wiki is up-to-date。。。うまくいきました。

 

ちなみに私が遭遇したバグは 3.0.1.400 では治っていませんませんでした orz