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

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

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

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

Q&A

1回答

13775閲覧

SSPI への呼び出しに失敗しました。内部例外を参照してください。エラーの解消法に困っています。

infottester1

総合スコア8

VB.NET

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

0グッド

0クリップ

投稿2016/09/28 07:48

編集2022/01/12 10:55

VB.netでFTP接続を行うプログラムを組んでいますがエラーが発生しFTP接続に失敗するケースがあり何が原因なのか困っております。
このエラーを出ないようにするには、どのように対応すればよろしいでしょうか?

エラー:SSPI への呼び出しに失敗しました。内部例外を参照してください。

SSLの証明書認証に失敗しているように見えます。
このエラーが発生しない端末もあります。

FtpWebRequestでレスポンスを取得できずに落ちます。

WindowsUpdate 2016年3月~9月の間のいずれかを適用すると発生する事が確認できました。何れかのパッチをアンインストールすればよいかと思われますが、どれなのかがわからない状況です。

以下、.netのトレースログを掲載いたします。

System.Net Information: 0 : [4632] FtpControlStream#8368877 - XXXX.XXX.X.XX:62557 から XX.XXX.XXX.XXX:21 への接続を作成しました。
System.Net Information: 0 : [4632] Associating FtpWebRequest#65328864 with FtpControlStream#8368877
System.Net Information: 0 : [4632] FtpControlStream#8368877 - 受信された応答 [220 ProFTPD 1.3.5rc4 Server (ProFTPD Default Installation) [XXX.XXX.XX.XXX]]
System.Net Information: 0 : [4632] FtpControlStream#8368877 - コマンド [AUTH TLS] を送信しています
System.Net Information: 0 : [4632] FtpControlStream#8368877 - 受信された応答 [234 AUTH TLS successful]
System.Net Information: 0 : [4632] TlsStream#7737498::.ctor(host=接続先ドメイン.com, #certs=0)
System.Net Information: 0 : [4632] FtpControlStream#8368877 - コマンド [USER ipharma] を送信しています
System.Net Information: 0 : [4632] SecureChannel#54010872::.ctor(hostname=接続先ドメイン.com, #clientCertificates=0, encryptionPolicy=RequireEncryption)
System.Net Information: 0 : [4632] SecureChannel#54010872 - 0 個のクライアント証明書の中から選択できます。
System.Net Information: 0 : [4632] キャッシュされた資格情報ハンドルを使用しています。
System.Net Information: 0 : [4632] InitializeSecurityContext(credential = System.Net.SafeFreeCredential_SECURITY, context = (null), targetName = 接続先ドメイン.com, inFlags = ReplayDetect, SequenceDetect, Confidentiality, AllocateMemory, InitManualCredValidation)
System.Net Information: 0 : [4632] InitializeSecurityContext(In-Buffer の長さ = 0、Out-Buffer の長さ =136、返されたコード = ContinueNeeded)。
System.Net Information: 0 : [4632] InitializeSecurityContext(credential = System.Net.SafeFreeCredential_SECURITY, context = a6f090:545bcf8, targetName = 接続先ドメイン.com, inFlags = ReplayDetect, SequenceDetect, Confidentiality, AllocateMemory, InitManualCredValidation)
System.Net Information: 0 : [4632] InitializeSecurityContext(In-Buffer カウント = 2、Out-Buffer の長さ = 0、返されたコード = ContinueNeeded)。
System.Net Information: 0 : [4632] InitializeSecurityContext(credential = System.Net.SafeFreeCredential_SECURITY, context = a6f090:545bcf8, targetName = 接続先ドメイン.com, inFlags = ReplayDetect, SequenceDetect, Confidentiality, AllocateMemory, InitManualCredValidation)
System.Net Information: 0 : [4632] InitializeSecurityContext(In-Buffer カウント = 2、Out-Buffer の長さ = 0、返されたコード = ContinueNeeded)。
System.Net Information: 0 : [4632] InitializeSecurityContext(credential = System.Net.SafeFreeCredential_SECURITY, context = a6f090:545bcf8, targetName = 接続先ドメイン.com, inFlags = ReplayDetect, SequenceDetect, Confidentiality, AllocateMemory, InitManualCredValidation)
System.Net Information: 0 : [4632] InitializeSecurityContext(In-Buffer カウント = 2、Out-Buffer の長さ = 0、返されたコード = ContinueNeeded)。
System.Net Information: 0 : [4632] InitializeSecurityContext(credential = System.Net.SafeFreeCredential_SECURITY, context = a6f090:545bcf8, targetName = 接続先ドメイン.com, inFlags = ReplayDetect, SequenceDetect, Confidentiality, AllocateMemory, InitManualCredValidation)
System.Net Information: 0 : [4632] InitializeSecurityContext(In-Buffer カウント = 2、Out-Buffer の長さ = 0、返されたコード = CredentialsNeeded)。
System.Net Information: 0 : [4632] SecureChannel#54010872 - 0 個のクライアント証明書の中から選択できます。
System.Net Information: 0 : [4632] キャッシュされた資格情報ハンドルを使用しています。
System.Net Information: 0 : [4632] InitializeSecurityContext(credential = System.Net.SafeFreeCredential_SECURITY, context = a6f090:545bcf8, targetName = 接続先ドメイン.com, inFlags = ReplayDetect, SequenceDetect, Confidentiality, AllocateMemory, InitManualCredValidation)
System.Net Information: 0 : [4632] InitializeSecurityContext(In-Buffer カウント = 2、Out-Buffer の長さ = 205、返されたコード = ContinueNeeded)。
System.Net Information: 0 : [4632] InitializeSecurityContext(credential = System.Net.SafeFreeCredential_SECURITY, context = a6f090:545bcf8, targetName = 接続先ドメイン.com, inFlags = ReplayDetect, SequenceDetect, Confidentiality, AllocateMemory, InitManualCredValidation)
System.Net Information: 0 : [4632] InitializeSecurityContext(In-Buffer カウント = 2、Out-Buffer の長さ = 0、返されたコード = MessageAltered)。
System.Net Information: 0 : [4632] FtpWebRequest#65328864::(FTP connection#8368877 を解放しています。)
System.Net Error: 0 : [4632] FtpWebRequest#65328864::GetResponse の例外 - SSPI への呼び出しに失敗しました。内部例外を参照してください。。
場所 System.Net.FtpWebRequest.SyncRequestCallback(Object obj)
場所 System.Net.FtpWebRequest.RequestCallback(Object obj)
場所 System.Net.CommandStream.Dispose(Boolean disposing)
場所 System.IO.Stream.Close()
場所 System.IO.Stream.Dispose()
場所 System.Net.ConnectionPool.Destroy(PooledStream pooledStream)
場所 System.Net.ConnectionPool.PutConnection(PooledStream pooledStream, Object owningObject, Int32 creationTimeout, Boolean canReuse)
場所 System.Net.FtpWebRequest.FinishRequestStage(RequestStage stage)
場所 System.Net.FtpWebRequest.GetResponse()
System.Net Verbose: 0 : [4632] Exiting FtpWebRequest#65328864::GetResponse()
System.Net Verbose: 0 : [4632] WebRequest::Create(ftp://接続先ドメイン.com/接続先フォルダ)
System.Net Information: 0 : [4632] FtpWebRequest#37528343::.ctor(ftp://接続先ドメイン.com/接続先フォルダ)
System.Net Verbose: 0 : [4632] Exiting WebRequest::Create() -> FtpWebRequest#37528343
System.Net Verbose: 0 : [4632] FtpWebRequest#37528343::GetResponse()
System.Net Information: 0 : [4632] FtpWebRequest#37528343::GetResponse(メソッド = PWD。)
System.Net Information: 0 : [4632] FtpControlStream#30475782 - XXXX.XXX.X.XX:62558 から XX.XXX.XXX.XXX:21 への接続を作成しました。
System.Net Information: 0 : [4632] Associating FtpWebRequest#37528343 with FtpControlStream#30475782
System.Net Information: 0 : [4632] FtpControlStream#30475782 - 受信された応答 [220 ProFTPD 1.3.5rc4 Server (ProFTPD Default Installation) [XXX.XXX.XX.XXX]]
System.Net Information: 0 : [4632] FtpControlStream#30475782 - コマンド [USER ipharma] を送信しています
System.Net Information: 0 : [4632] FtpControlStream#30475782 - 受信された応答 [550 SSL/TLS required on the control channel]
System.Net Information: 0 : [4632] FtpWebRequest#37528343::(FTP connection#30475782 を解放しています。)
System.Net Error: 0 : [4632] FtpWebRequest#37528343::GetResponse の例外 - リモート サーバーがエラーを返しました: (550) ファイルが使用できません (例: ファイルが見つからない、ファイルへのアクセスがない)。
場所 System.Net.FtpWebRequest.SyncRequestCallback(Object obj)
場所 System.Net.FtpWebRequest.RequestCallback(Object obj)
場所 System.Net.CommandStream.Dispose(Boolean disposing)
場所 System.IO.Stream.Close()
場所 System.IO.Stream.Dispose()
場所 System.Net.ConnectionPool.Destroy(PooledStream pooledStream)
場所 System.Net.ConnectionPool.PutConnection(PooledStream pooledStream, Object owningObject, Int32 creationTimeout, Boolean canReuse)
場所 System.Net.FtpWebRequest.FinishRequestStage(RequestStage stage)
場所 System.Net.FtpWebRequest.GetResponse()
System.Net Verbose: 0 : [4632] Exiting FtpWebRequest#37528343::GetResponse()
System.Net Verbose: 0 : [5852] WebRequest::Create(ftp://接続先ドメイン.com/接続先フォルダ00001/)
System.Net Information: 0 : [5852] FtpWebRequest#48723039::.ctor(ftp://接続先ドメイン.com/接続先フォルダ00001/)
System.Net Verbose: 0 : [5852] Exiting WebRequest::Create() -> FtpWebRequest#48723039
System.Net Verbose: 0 : [5852] FtpWebRequest#48723039::GetResponse()
System.Net Information: 0 : [5852] FtpWebRequest#48723039::GetResponse(メソッド = NLST。)

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

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

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

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

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

guest

回答1

0

私も同じ現象に悩まされております。
VB.NETで下記のようなSSLを用いたデータベースの接続で、
mysql 5.1.58に対して接続しようとしており、Connectorの5.1.7を使用しております。

Encriptがtrueのときは下記のエラーがでて
「 SSPI への呼び出しに失敗しました。内部例外を参照してください。」
InnerExceptionは下記のようになっております。
「関数に渡されたパラメーターの 1 つ以上が無効です。」

しかし、Encryptをつけないと正常に動いているようです。

似たような質問が解決済みになっておりますが、
Windows Updateの特定のものを消せばいいという、
根本的な解決になっていない回答のため、悩んでおります。

似たような現象が解決の糸口になればと回答させていただきます。

VB.NET

1 str.Append("server=").Append(Config.Db.AdressOfServer) 2 str.Append(";port=").Append(Config.Db.PortNumber) 3 str.Append(";uid=").Append(Config.Db.UserAccount) 4 str.Append(";pwd=").Append(Config.Db.UserPassword) 5 str.Append(";database=").Append(Config.Db.DatabaseName) 6 7 If Config.Db.Encrypt Then 8 str.Append(";encrypt=true") 9 End If 10 11 Arg1.ConnectionString = str.ToString 12 '----- MySQL Open ------ 13 14 Arg1.Open()

投稿2017/01/04 08:07

yamame

総合スコア81

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問