質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

Q&A

解決済

2回答

1051閲覧

WebRequest.Create()がフリーズするPCがある

hogemania

総合スコア18

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

0グッド

0クリップ

投稿2022/08/03 06:56

編集2022/08/04 02:55

前提

昔から使用している、.net 3.5を使用したVBのプログラムを新しく導入したPC(Windows10 x64)にインストールしたところ、正常に動作しないことがわかり困っています。これまでWindows7やWindows10で動作していたプログラムです。

  • .NET Framework 3.5はコントロールパネル→プログラムの機能→Windowsの機能の有効かまたは無効化で「.NET Framework 3.5(.NET2.0および3.0を含む)」のチェックボックスをONにしてインストールしました。
  • 私が確認したPCは1台だけですが、新規導入した同じ機種で症状が出ているときいています。Windows10のバージョンはすべて同じで、同じ方法で.NETはインストールしています。

実現したいこと

調べたところ、WebRequest.Create()を呼び出したっきり、返ってこない(フリーズしている)ことがわかりました。
どうすれば正常に動作させられるのか、わかる方がいらっしゃいましたら、教えてください。

発生している問題・エラーメッセージ

フリーズしてしまうのでエラーメッセージはありません。

正常に動作しているPCのWindows10のバージョン: 1909(OSビルド18363.1440)
正常に動作しないPCのWindows10のバージョン: 21H2(OSビルド19044.1826)

該当のソースコード

サンプルを作成し、同じ現象が発生することを確認しました。

VB.NET

1 Sub Main() 2 Console.WriteLine("WebRequest.Create(): begin") 3 Dim req As HttpWebRequest = CType(WebRequest.Create("http://www.google.com"), HttpWebRequest) 4 Console.WriteLine("WebRequest.Create(): end") 5 Dim res As HttpWebResponse = req.GetResponse() 6 Using s As Stream = res.GetResponseStream() 7 Using sr As StreamReader = New StreamReader(s) 8 Console.WriteLine(sr.ReadToEnd()) 9 End Using 10 End Using 11 End Sub

試したこと

  • .netのバージョンを4.8に変えてビルドしたところ、動作するのですが、問題のプログラムではほかに.net 3.5に依存したDLLを使用しているため、選択肢にならない感じです。
  • .netのソースがあればフリーズする原因が突き止められるのではないかと思いましたが、見つかりません。(オープンソースになったんじゃありませんでしたっけ?)
  • 問題のPCでデバッグしようとするとHRESULT=0x80070002がでてデバッグできないので、ふと思いついて管理者権限で実行すると正常に動作することがわかりました。しかし、管理者権限で実行しないとデバッグできず、管理者権限で実行するとフリーズしないので問題の個所を特定できず、頭を抱えています。

補足情報(FW/ツールのバージョンなど)

Visual Studio 2019を使用しています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hogemania

2022/08/03 07:32

.net frameworkはコントロールパネルのプログラムと機能→Windowsの機能の有効化または無効化で「.NET Framework 3.5(.NET2.0および3.0を含む)」にチェックを入れてインストールしました。
退会済みユーザー

退会済みユーザー

2022/08/03 07:53

それは「正常に動作しないPCのWindows10のバージョン: 21H2(OSビルド19044.1826)」ですべて設定済みで、それでも問題が出るということですか? 「PCのWindows10のバージョン: 21H2(OSビルド19044.1826)」ならどの PC でも提示されたコードで 100% 再現性があるのでしょうか?
hogemania

2022/08/03 08:04

私が確認したPCは1台だけですが、新規導入した同じ機種で症状が出ています。Windows10のバージョンはすべて同じで、同じ方法で.NETはインストールしています。
KOZ6.0

2022/08/03 08:30

Framework 3.5 を有効化した状態なら、4.8 の exe から 3.5 の dll を呼び出せるはずです。 ソースはここからダウンロードできますが、3.5 のは無いですね。 https://referencesource.microsoft.com/download.html 「Telerik JustDecompile」でデコンパイルしてみるとか https://www.telerik.com/products/decompiler.aspx dnSpy を使ってみるとか 「凄すぎて大草原不可避な.NET デコンパイラdnSpyを使ってみる」 https://qiita.com/Tokeiya/items/54fbf30cb21c77c05c41
hogemania

2022/08/03 08:57

情報ありがとうございます。試してみます。
退会済みユーザー

退会済みユーザー

2022/08/16 03:06

いつまでも放置しておかないで、状況を書くとかクローズするとかしてください。
guest

回答2

0

自己解決

管理者権限で実行すれば問題ないのであればプログラムは修正したくないという話になったため、使用するユーザーにAdministrator権限を付与することになりました。
すっきりしない結末になりましたが、これで解決済みとさせていただきます。

投稿2022/08/29 06:29

hogemania

総合スコア18

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

以下の環境で、コードは VB.NET ではなく C# ですが、試してみました。問題なく応答が取得できます。なので、質問者さんの固有の環境の問題、もしくは質問に書いてないところに問題があるのではないかと思います。

Windows 10 21H2 (OS ビルド 19044.1865)
Microsoft Visual Studio Community 2019 Version 16.11.17
.NET Framework 3.5 のコンソールアプリ

コード;

イメージ説明

結果:

イメージ説明

当方の環境では問題は再現できませんし、そういう話は聞いたこともないし、ちょっとお手上げ。もう少し調べて何か分かったら連絡します。

投稿2022/08/03 09:54

編集2022/08/03 09:57
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hogemania

2022/08/04 00:37

わざわざお試しくださり、ありがとうございます。再現できないというのもヒントになりますので、ありがたい情報です。
退会済みユーザー

退会済みユーザー

2022/08/04 01:21

その後ググって調べたりしたのですが、質問の事例は見つかりませんでした。よくある話的なことならググればヒットするはずですが、ヒットしないということは、上に書いた「質問者さんの固有の環境の問題、もしくは質問に書いてないところに問題がある」ということでしょう。そのあたりを調べてください。それができるのは質問者さんだけです。
退会済みユーザー

退会済みユーザー

2022/08/04 02:02 編集

上のコメントで「ヒットしない」と書きましたけど、自分が探して見つけた中で一番このスレッドの問題に近そうな記事を紹介しておきます。 HttpWebRequest.GetResponse() hangs on .NET 3.5 but works on .NET 4 https://stackoverflow.com/questions/13120855/httpwebrequest-getresponse-hangs-on-net-3-5-but-works-on-net-4 回答は Microsoft のサンプルコードを参考にしたら解決したというものです。 ただ、質問者さんのケースはそういう話ではなさそうで(自分が質問者さんのコードそのものを試しても問題は再現しないので)、やはり上にも書いた「質問者さんの固有の環境の問題、もしくは質問に書いてないところに問題がある」ということが怪しそうな気がします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問