つよつよにあこがれるプログラマの日記

子育てとかプログラムとか日々の事をここに残します。ぼちぼちやってます。

【.Net Core MVC】npgsqlと戦った

自分の学習実績を思い出せるようにメモ

.Net Core MVC でアプリを書いている(途中、Node.jsに浮気しようとしたが辞めた。

 

今日やったこと

・Oauth2認証の追加(FB,Google

 ・DBのきりかえ、O/R Mapperの使用

 

 --

・Oauth2認証の追加(FB,Google

FacebookGoogle認証を追加した。

.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もっとハマると思ったけど、普通に動いてよかったー

次はフロントエンドを作り込む。

フロント側書くのめんどくさいなー

 

【.NET MVC / .NET CORE】.NET MVC CORE + EntityFrameworkCoreでマイグレーションがうまくいかない

.NET MVC CORE + EntityFrameworkCoreでマイグレーションがうまくいかなくって困りました。

どううまくいかないかというと、マイグレーションをかけても新しくコードファーストで定義したメンバ列が追加されなくなりました。

 

結論:

アクセサ(getter / setter)を定義し忘れていた。

 

つけたらちゃんとマイグレーションの対象になり、治りました。

【VisualStudio2015/2017】IIS Expressでのデバッグ時に 「SSLを有効にする」が動かない時の直し方

.NET CORE MVCの勉強中、

VisualStudio2017のIIS Expressでのデバッグ時に、

SSLを有効にする」オプションを選択してもうまく動かなくて詰まった。

検索してみると誰もこんな所で詰まっていない。(泣)

困った。直せたのでここに残しておく。


問題:

デバッグ」->「Webサーバーの設定」から「SSLを有効にする(S)」をチェックしてもSSLが有効になってくれない。

ブラウザで開くと、以下のメッセージが表示される。

GoogleChrome

 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関連のサービス生きてるしダメすぎだろこのバッチ
ゴミくばらないでください

 

・バッチ配布ページ

helpx.adobe.com

 

結局、以下の方法でサービスを一個ずつとめて殺してを繰り返しました。

・一個ずつサービスをとめて、adobeを殺す方法

www.ctrl.blog

.NET Core学習の環境構築完了

前回から、「ASP.NET MVC プログラミング入門」を学習中。

テキスト通りSQL Serverもダウンロードした。なんだかすごく大掛かりになった。


僕もスゴイプログラマたちのようにLinuxでEmaxで開発できたら、こういうわずらわしさからも解放されるのだろうか
でもでも、みんな結局Mac使って開発してるんだよね?(半べそ


…僕の目的はアプリ開発なんだから、格好いい開発環境とかににこだわるのはやめよう、そもそも自分は絵がないと想像できないタイプの人間だしな…GUIが性に合ってるよ

 

Scaffoldのスペルを間違えてたせいでコマンドが通らず気づくのに時間がかかった
fとtをタイポしてた

VisualStudioのプロジェクトテンプレートに「Web」「ASP.NET MVC」がない

久々に勉強をしようと思い、実践開始。

ASP.NET MVCプログラミング入門」という本を読んでいる、
さて、MVCプロジェクトを作るかと思ったら、プロジェクトテンプレートにMVCがない。っていうかWeb自体がない。
困ったので調べたらすぐに対処法が見つかった。

 

インストーラーの「変更」から、Web関連のツールを選んでインストールできるようだ。なんで、インストールしなかった俺。
もしかしてWebなんか使わねえやと思って外してインストールしたのかな?

 入れられるものは最初から入れておこう!

↓ 

インストールしなおしてもまだ出てこない

VisualStudioのUpdateが必要かな?と思い、
アップデート開始2015v1→2015v3
結構古くなってたんだな

Update3にしてもまだ選択できない。
Tool群の何かが足りんのかな?と思って検索し、
VIsualstudioのTools→Update And Extentions→Updateという所を見ると、色々更新が…
.NetCore1.0.1 VS 2015 Tooling Preview2 というのがめちゃめちゃ怪しいので迷わずUpdate、これで動くようになった

 

まとめ

以下のblogを見つけた。
VisualStudio2015から.NET CORE MVCに手を付ける場合、この人の手順でやれば問題ないと思う。大変参考になりました。ありがとうございます。
リンク先:

qiita.com

 

感想
VisualStudioのベースのツール群がクソでかい、2日がかりでインストールした
(就寝前に放置しただけだが…


昨今のVisualStudioはクロスプラットフォーム開発とかAzure系のツール群とか、
Unityなんかも開発できるしなんでもできるから、
昔に比べてベースの部分アップデートすると色々とバカでかくなってるのかもしれないね(素人考え

www.lancork.net