どうもーーーバックエンドエンジニアどぅえーーーーっす!フゥーーーアッ↑↑↑↑

◆結論

  • 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端子じゃないですか。そんなのゴミじゃないですか。ジョブズ許さねぇ。