2017-04-21 50 views
0

这是我的代码传递会话值到NetworkCredentials

Dir_tpWebRequest.Credentials = New System.Net.NetworkCredential(System.Web.HttpContext.Current.Session("us_UserName"), System.Web.HttpContext.Current.Session("us_Password")) 

“System.Web.HttpContext.Current.Session(” us_UserName“)”这行代码给出了一个错误“参数匹配参数‘用户名’从“对象”缩小到“字符串”“任何有此想法的人?

+0

donot把它写在一个双引号。使用单引号。 Doube引号使它成为一个字符串。 –

+0

@学习者什么?他只需要将值转换为字符串,使用.ToString或Convert.ToString:Convert.ToString(Session(“us_UserName”)) – Esko

+0

我假设他有一个会话变量,他需要将它传递给网络凭据。 –

回答

1

Session可以包含任何东西,而不仅仅是字符串。

因此,当您从会话中检索某些内容时,它的输入为object

如果你知道你在检索字符串,你需要插入强制转换告诉编译器:

Dir_tpWebRequest.Credentials = New System.Net.NetworkCredential(
    CType(System.Web.HttpContext.Current.Session("us_UserName"),String), 
    CType(System.Web.HttpContext.Current.Session("us_Password"),String)) 

如果您使用的内存供应商,有实际没有限制你可以存储的对象类型。如果您使用其他提供程序,则仅限于可序列化的对象,但范围仍然很广。

+0

(字符串)System.Web.HttpContext.Current.Session(“us_UserName”)使用此原因显示错误“错误'String'是类类型,不能用作表达。” –

+0

@EdwardCalusayan - 如果这不是修复,那么可能会有更多的问题需要解决。但是这意味着我们需要不止一行代码。请尝试创建一个[mcve] –

+0

@Damien_The_Unbeliever你的回答是正确的,但我怀疑他使用VB.Net :)无论如何,他已经修复了。 – Esko