どうもーーーバックエンドエンジニアどぅえーーーーっす!フゥーーーアッ↑↑↑↑
◆結論
- Azure Artifacts Credential Provider
- iex “& { $(irm https://aka.ms/install-artifacts-credprovider.ps1) }”
- 「dotnet run」に「–interactive」をつける。
- リストアなら「dotnet restore –interactive」とか。
◆いきさつ
そもそも、ASP.NET Coreで作ったAPIをプライベートネットワーク上に公開したかったんです僕。
.vsフォルダの中を掘って「applicationhost.config」とか見つけたんだけど、
Web サーバー ‘IIS Express’ に接続できませんでした。
とか言われるし、元に戻したんだけどサーバー起動できなくなってビビりまくってPC再起動してもダメで泣きながらソリューションをクリーンしたらまた動くようになって胸をなでおろしてた。
launchSettings.jsonのapplicationUrlってのを弄ればいい説もあったんだけど、「そのポート使ってます」みたいに言われてキレてた。
▼dotnet runならいける説
dotnet run --urls "http://localhost:5100"
「このノリでいけるで」みたいな複数ソースあったからdotnet runしようと思ったんですけど
error : Unable to load the service index for source
error : Response status code does not indicate success: 401 (Unauthorized). [….sln]
とか言われて、「いや、Visual Studioにもうログインしてんだからその認証情報使えや」と思ったんですけど、Visual Studioくんを説得すること叶わず、渋々ググって結論のアレに辿り着いた。
◆Azure Artifacts Credential Provider
認証してくれるやーつ。スタンドアロンのexeファイルと、「dotnet」やら「nuget」やらのコマンドから経由して叩くdllのどちらかを選んで使える。
README読めって話ですけど、少し解説。
▼インスコ
この例ではdllのインストールで済ませる。
iex "& { $(irm https://aka.ms/install-artifacts-credprovider.ps1) }"
Invoke-Expressionっすね。iexだけで叩けるとは知らなかった。
Web上においてあるps1を実行しますよって話だろう。ブラウザでアクセスしたら「https://raw.githubusercontent.com/microsoft/artifacts-credprovider/master/helpers/installcredprovider.ps1」ってとこにリダイレクトされて、そこにスクリプトが書いてありますな。
これにより「[ユーザーフォルダ]/.nuget/plugins/netcore/CredentialProvider.Microsoft」に拡張機能がインストールされる。管理者権限じゃなくても実行可能。
▼実行
–interactiveをつけて、いつも通りdotnet runすればいいでしょう。英語の説明書きが出るのでそれをよく読み、従うこと。
ソリューションフォルダとプロジェクトフォルダが別階層にある人は、.slnがあるフォルダをコマンドラインで開いて
dotnet run --project [ほげほげ].csproj --interactive
的なノリでプロジェクトファイルを指定して差し上げろ。
▼認証情報のキャッシュ
Session Token Cache Locations曰く
[ユーザーフォルダ]\AppData\Local\MicrosoftCredentialProvider
にあるって話なんだけど、そこに落ちてるデータを削除しても認証情報がリセットされない。どうなってんだろ。クリアしたいんですけど。
◆おまけ:URL指定
以下の感じでネットワークに公開できました。
dotnet run --project .\[ほげほげ].csproj --urls "http://192.168.5.13:44301"
しあわせー。
ただ、ファイアウォールでのアクセス許可必要な可能性ある。うまくいかないと思ったら「Windows Defender ファイアウォール」を開いて「詳細設定」の「受信の規則」で「新しい規則」を追加してポート開いたり閉じたりしてみ。
◆結
iPhoneのSafariに開発者ツールほしい。一応WindowsのChromeからinspectできるみたいなんだけど、なんか手順が気持ち悪いからやりたくない。
Macならサクッとinspectできるんだけど、一度物理ケーブルで接続しないと繋がらんというクソ。いやLightningじゃなかったら何の文句もないんですけどLightning端子じゃないですか。そんなのゴミじゃないですか。ジョブズ許さねぇ。
コメントを残す