首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >FtpWebRequest/FtpWebResponse :成功连接后,即使提供了错误的密码,也可以成功连接

FtpWebRequest/FtpWebResponse :成功连接后,即使提供了错误的密码,也可以成功连接
EN

Stack Overflow用户
提问于 2013-05-21 22:16:33
回答 1查看 1.6K关注 0票数 2

我正在使用用户提供的用户名/密码测试FTP连接。

如果我独立运行我的单元测试,一切都可以正常工作。但是如果我尝试一个有序的测试,在FTP_Test_Unsuccessful之前运行FTP_Test_SucessfulFTP_Test_Unsuccessful测试失败:即使我在成功连接之后提供了错误的密码,FTP连接也是成功的。

代码语言:javascript
复制
Passed          Unit Test   FTP_Test_Unsuccessful       00:00:02.3566157
Passed          Unit Test   FTP_Test_Sucessful          00:00:00.3048244
Failed          Unit Test   FTP_Test_Unsuccessful       00:00:00.2696941
Not Executed    Unit Test   FTP_Test_Sucessful          00:00:00

我怎样才能“重置”FTP连接,这样FTP_Test_Unsuccessful才能正确地测试连接。

以下是我的单元测试:

代码语言:javascript
复制
'''<summary>
'''basic Unsuccessful FTP test
'''</summary>
<TestMethod()>
Public Sub FTP_Test_Unsuccessful()
    _TestSettings.FTPEnabled = True
    _TestSettings.ChangeFTPCredentials("User", "BadPasword")
    Try
        Assert.IsFalse(_TestSettings.TestFtpSettings())

    Catch ex As AssertFailedException
        Throw 

    Catch ex As Net.WebException
        Dim FTPResponse As FtpWebResponse = DirectCast(ex.Response, FtpWebResponse)
        Assert.AreEqual(FtpStatusCode.NotLoggedIn, FTPResponse.StatusCode)

    Catch ex As Exception
        Assert.Fail()
    End Try
End Sub

'''<summary>
'''basic Sucessful FTP test
'''</summary>
<TestMethod()>
Public Sub FTP_Test_Sucessful()
    _TestSettings.FTPEnabled = True
    _TestSettings.ChangeFTPCredentials("User", "GoodPasword")
    Assert.IsTrue(_TestSettings.TestFtpSettings())
End Sub

下面是相关的代码:

代码语言:javascript
复制
Public Function TestFtpSettings() As Boolean
    Dim FTPConnectionTestedSuccessfully As Boolean = False
    Dim response As FtpWebResponse = GetTestFtpResponse()
    Dim StatusCode As System.Net.FtpStatusCode = response.StatusCode
    response.Close()
    FTPConnectionTestedSuccessfully = (StatusCode = Net.FtpStatusCode.OpeningData)

    Return FTPConnectionTestedSuccessfully
End Function

Private Function GetTestFtpResponse() As FtpWebResponse
    Dim request As FtpWebRequest = GetFTPConnection(WebRequestMethods.Ftp.ListDirectory)
    Dim response As FtpWebResponse = GetFTPResponse(request)

    Return (response)
End Function

Private Function GetFTPConnection(Method As String) As FtpWebRequest
    'Get the object used to communicate with the server.

    Dim FTPAdress As Uri = New Uri(String.Format("ftp://{0}:{1}", _
                                                 Me.FTPServerName, _
                                                 Me.FTPPort))

    Dim request As FtpWebRequest = DirectCast(WebRequest.Create(FTPAdress),  _
                                              FtpWebRequest)

    request.Method = Method
    request.Credentials = New NetworkCredential(Me.FTPUserName,
                                                Me.GetDecryptedPassword)
    Return request
End Function

Public Function GetFTPResponse(request As FtpWebRequest) As FtpWebResponse
    Return DirectCast(request.GetResponse(), FtpWebResponse)
End Function
EN

回答 1

Stack Overflow用户

发布于 2013-05-21 22:46:25

多亏了How to Reuse FtpWebRequest Connection上的这个答案,我才刚刚将request.KeepAlive = False添加到我的GetFTPConnection函数中。所有的测试都通过了。

代码语言:javascript
复制
Private Function GetFTPConnection(Method As String) As FtpWebRequest
    'Get the object used to communicate with the server.

    Dim FTPAdress As Uri = New Uri(String.Format("ftp://{0}:{1}", _
                                                 Me.FTPServerName, _
                                                 Me.FTPPort))

    Dim request As FtpWebRequest = DirectCast(WebRequest.Create(FTPAdress),  _
                                              FtpWebRequest)

    request.Method = Method
    request.KeepAlive = False
    request.Credentials = New NetworkCredential(Me.FTPUserName,
                                                Me.GetDecryptedPassword)
    Return request
End Function
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16672317

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档