【发布时间】:2012-07-03 07:43:35
【问题描述】:
我正在使用 C# 开发一个 ASP.NET 应用程序,该应用程序试图通过登录从网站读取一些文件,然后将文件写入本地驱动器。
我已经通过使用 - 读取默认凭据来传递网络凭据以登录网站 -
request.Proxy.Credentials = CredentialCache.DefaultCredentials;
现在我想将文件存储在需要一些凭据才能访问该位置的服务器目录中。
网站登录代码 -
string webUrl = "https://web.site.com/";
string formParams = string.Format("user={0}&password={1}", username, password);
WebRequest req = WebRequest.Create(webUrl);
req.ContentType = "application/x-www-form-urlencoded";
req.Method = "POST";
req.Proxy.Credentials = CredentialCache.DefaultCredentials;
byte[] bytes = Encoding.ASCII.GetBytes(formParams);
req.ContentLength = bytes.Length;
using (Stream os = req.GetRequestStream())
{
os.Write(bytes, 0, bytes.Length);
}
WebResponse resp = req.GetResponse();
cookieHeader = resp.Headers["Set-cookie"];
位置是\\11.11.11.11\Folder\
如何传递访问该位置的凭据?
我已经了解了impersonation,但到目前为止还没有得到任何帮助。我有可以访问该位置的凭据。但是如何使用 C# 代码来做到这一点?
提前致谢:)
【问题讨论】:
-
您是说 ASP.NET 应用程序在登录后正在服务器端读取文件,然后尝试将它们保存到服务器本地的文件夹中?如果是这样,问题将是运行 Web 服务器的帐户的权限。默认情况下它没有访问权限。
-
如果问题如@Michael 所述,您只需为运行应用程序的帐户提供正确的凭据即可。在这种情况下,我下面的答案中的解决方案太复杂了,不适用于这个问题。
-
不是该服务器的本地服务器,而是不同域上的不同服务器。当我尝试通过输入服务器地址来访问该位置时,它会询问用户名和密码。我需要一种方法,以便我可以从我的应用程序登录到该服务器
-
查看更新后的问题
标签: c# asp.net impersonation