【.Net Core MVC】npgsqlと戦った
自分の学習実績を思い出せるようにメモ
.Net Core MVC でアプリを書いている(途中、Node.jsに浮気しようとしたが辞めた。
今日やったこと
・Oauth2認証の追加(FB,Google)
・DBのきりかえ、O/R Mapperの使用
--
・Oauth2認証の追加(FB,Google)
.NET Core MVCの初期は大変だったみたいだけど、今はいろいろフレームワーク側がやってくれるので便利。
・認証の設定
https://docs.microsoft.com/en-us/aspnet/core/security/authentication/social/?view=aspnetcore-2.1
・DBのきりかえ、O/R Mapperの使用
近い内にAWSなりGCPにデプロイする予定なのだが、SQL Serverを使い続けるのもあれなのでDBをPostgresに変更した。O/R Mapperを使うことにした。
・O/R Mapper
http://www.npgsql.org/efcore/index.html
ところが、マイグレーションをかけると怒られて失敗してしまった。
①Npgsql.PostgresException (0x80004005): 42P07: リレーション"AspNetRoles"はすでに存在します
②Npgsql.PostgresException (0x80004005): 42P01: リレーション"hogehoge"は存在しません
③42P07: リレーション"IX_AspNetRoleClaims_RoleId"はすでに存在します
AspNetのテーブルが作成された後でコケてしまい、hogehogeTablesが作れないみたいようだ。マイグレーションファイルがうまく作れなかったみたい。
自分の操作のせいなのか、Npgsqlのせいなのかわからない。
結局、MigrationClassからAspNet関連テーブルの実行済みのクエリを削除しながらもう一度Update-Daatabase。何回か繰り返してテーブル作成完了
--
今日の感想:
O/RMapperもっとハマると思ったけど、普通に動いてよかったー
次はフロントエンドを作り込む。
フロント側書くのめんどくさいなー
【VisualStudio2015/2017】IIS Expressでのデバッグ時に 「SSLを有効にする」が動かない時の直し方
.NET CORE MVCの勉強中、
VisualStudio2017のIIS Expressでのデバッグ時に、
「SSLを有効にする」オプションを選択してもうまく動かなくて詰まった。
検索してみると誰もこんな所で詰まっていない。(泣)
困った。直せたのでここに残しておく。
問題:
「デバッグ」->「Webサーバーの設定」から「SSLを有効にする(S)」をチェックしてもSSLが有効になってくれない。
ブラウザで開くと、以下のメッセージが表示される。
localhost から無効な応答が送信されました。
・InternetExplorer
このページに安全に接続できません
解決法:
プロジェクト配下applocationHost.configを修正し、デバッグ時に使われるポートの競合を解決した。
→C:\Users\LocalUser\source\repos\SampleProject\.vs\config\applocationHost.config
修正前
<binding protocol="http" bindingInformation="*:44381:localhost" />
<binding protocol="http" bindingInformation="*:44382:localhost" />
<binding protocol="https" bindingInformation="*:44382:localhost" />
修正後
<binding protocol="http" bindingInformation="*:44381:localhost" />
<binding protocol="https" bindingInformation="*:44382:localhost" />
原因:
設定ファイル内が以下のようになってしまいポートが競合してしまっていた。
httpとhttpsのポートを1番違いにしようと思って、
「デバッグ」->「Webサーバーの設定」の「アプリURL」を変更する時に
「SSLを有効にする(S)」のURLをコピペし、最下位一桁をいじった。
結果、設定ファイル内が以下のようになってしまいポートが競合してしまっていた。
メモ:
古いバージョンVisualStudio時代は以下のようにSSL証明書をローカルにインストールしたり、applocationHost.configに設定を追加する必要があったようだ。
今(VisualStudio 2017 + IIS 2018年4月時点最新)では多分しなくていい。
・applocationHost.configにバインド登録
お楽しみはこれからだ!: IIS ExpressでSSLを有効にしてデバッグ
・How to trust the IIS Express Self-Signed Certificate
How to trust the IIS Express Self-Signed Certificate – Robert McMurray's Blog [MSFT]
収穫:
この問題にぶち当たって(多分日本で僕だけだと思うけど…)、
VisualStudio2017ではapplocationHost.configの場所がプロジェクトごとに分離されたという事を学んだ。
※昔はIIS Express配下→「%USERPROFILE%\Documents\IISExpress\config\applicationhost.config」だった)
まとめ:
余計なことはするな
いきなりNodejs
.NET MVC を勉強していました。
大体理解できてきたので、Webアプリをテストで作ろうと思いました。
Oauth2認証を使おうと思いましたが、なかなか泥臭く認証まわりがチャチャチャーっと作れないので苦痛でした。モチベーションが下がり始めました。
気づいたらNode.jsをインストールしていました。
こないだインタプリタ言語も勉強しようとPythonの本も買ったのに、なぜかNodejs
なんか、こんなふらふら勉強したら身につく技術も身につかない気がするのだが、フィーリングを大切にしたい。せっかくPythonチュートリアル読み終わったのに…なにやってるんだろう。
ただ、手を動かしていればそれだけ何か身につくはずだ。
ポジティブに行こうポジティブに。
Nodejsで目的のアプリ一個つくったらガッツリ.NET MVCに戻ろう。
絶対Adobe殺すマン
SQL serverとか.NET CORE関連で最近色々インストールしてて、いらないものを整理しようと思った。
ところが、Adobe関連のソフト(CreativeCloud)をアンインストールするのが至難の業
ちょっと前にイラレをインストールしたせいなんだけど、あんなもの興味本位でインストールしちゃだめだと思う
アップデートする用のサービスがいっぱいたちあがって依存しあってるので、プロセス使用中でアンインストールができないという曲者
Adobeのページにいって、削除するバッチみたいの落として叩いても、完全に削除できない
ってか余裕でAdobe関連のサービス生きてるしダメすぎだろこのバッチ
ゴミくばらないでください
・バッチ配布ページ
結局、以下の方法でサービスを一個ずつとめて殺してを繰り返しました。
・一個ずつサービスをとめて、adobeを殺す方法
.NET Core学習の環境構築完了
前回から、「ASP.NET MVC プログラミング入門」を学習中。
テキスト通りSQL Serverもダウンロードした。なんだかすごく大掛かりになった。
僕もスゴイプログラマたちのようにLinuxでEmaxで開発できたら、こういうわずらわしさからも解放されるのだろうか
でもでも、みんな結局Mac使って開発してるんだよね?(半べそ
…僕の目的はアプリ開発なんだから、格好いい開発環境とかににこだわるのはやめよう、そもそも自分は絵がないと想像できないタイプの人間だしな…GUIが性に合ってるよ
Scaffoldのスペルを間違えてたせいでコマンドが通らず気づくのに時間がかかった
fとtをタイポしてた