FC2ブログ

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
当サイトは基本をすっ飛ばしてます。基本文法等は、@ITをどうぞ
カテゴリー: スポンサー広告

ローカルなら動くのに

VisualStudio(VS)2005あたりから、開発用WEBサーバー(IIS Express)が提供されている。
ASP.NET Web プロジェクト用の Visual Studio の Web サーバー
これは、自分の開発用PCに、IISをインストールしなくても、WEBアプリを開発できますよー、ということも含め、お手軽な感じでWEBアプリ開発を進められるというメリットもあり、実際、開発するときに非常に重宝されている。
しかし、このお手軽さが仇となり、後々(というか、運用開始準備段階で)困ることが多々ある。一番困るのが、

開発用WEBサーバー(ローカル)なら動くのに、アプリサーバー(IIS)に移した途端、全く動かなくなる。

という奴である。デグレの定番、「昨日までは動いてた」の亜種みたいで、嫌な感じである。
よくよく考えてみれば、当然で必然の話なんだけども、最初は戸惑うのですよ、これが。IISに移動して動かなくなる箇所というのは、大体外部リソースへのアクセスエラーである。

〇そもそも起動しない。
最近のWindowsサーバーは、大体が64bitOSであり、当然ながら、ASP.NETも64bitで動作する。32bitで動作させるには、明示的に設定する必要があり、その設定をしないまま32bit用のアセンブリを使うと、エラーになる。
BadImageFormatException
web.configの設定をミスしている時も、エラー内容は違うけど、起動しない。

〇他のサーバーのフォルダにアクセスできない。
最近のWindowsサーバーは、セキュリティに厳しい。今までが甘すぎたともいえる。しかし、その甘さを突いて実現させているところが動かなくなったりする。ASP.NETアプリからファイルサーバーへアクセス(ファイルの読み書き)をしようと思ったら、アプリケーションプールを実行しているユーザーが権限を持っている必要がある(偽装化という手段もあるけど、不特定多数のユーザーがアクセスするサイトには向かない)。
【第47回】IISとアプリケーションプールの設定
そのサーバーのシステムアカウントで運用することが多いので、そのアカウントに対してアクセス権を与える必要がある。
Windowsのサービスで使用される「System」「Local Service」「Network Service」アカウントとは?

〇プリンターの一覧を取得できない。
「プリンター」だろう?簡単に取れるじゃないの?と思ったのが、大きな間違いだったと後でわかった。ファイルの読み書きより、よほどめんどくさかった。
C#でプリンター一覧を取得するには、それ用のメソッドが提供されているので、特に難しいわけではない。しかし、ASP.NETアプリから実行すると、「インストールされているプリンターがない」と言ってそのまま終わる。
サーバーからの Web ベースのレポートの印刷
日付は古いけど。
同じような内容で悩んでいた感じ。
ASP.Netアプリからネットワークプリンタへの印刷でエラーが発生する
結果として、実行ユーザーたるシステムアカウントに対して管理者権限が必要だった。
プリント サーバーのアクセス許可を設定する
machine.configの設定まで変える必要があるとは…。
<!--変更前-->
<processModel autoConfig="true" />
<!--変更後-->
<processModel autoConfig="false" userName="SYSTEM" password="AutoGenerate"/>
プリンターへアクセスするには、システムアカウントである必要がある。ほかのユーザーでは無理だった。
うん、サーバーから印刷なんてするもんじゃねーな。
スポンサーサイト
当サイトは基本をすっ飛ばしてます。基本文法等は、@ITをどうぞ
カテゴリー: WEB | コメント: 0 | トラックバック: 0


この記事へのコメント

コメントの投稿

非公開コメント


サイドバー背後固定表示サンプル

当ブログに書かれたソースコードは流用自由です。

バグ、スペルミス等はありうる事です。

ご利用の際は自己責任でお願いしますm(_ _)m

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。