Web配置文件中的Windows模拟代码出错

时间:2012-02-18 07:18:52

标签: c# asp.net iis-7 web-config impersonation

我在webconfig文件中声明了以下部分以允许模拟,我已将该文件夹共享到其他计算机上的网络内的公共访问

<system.web>
    <compilation debug="true" targetFramework="4.0" />
    <authentication mode="Windows"/>
    <identity impersonate="true" userName="******" password="*****"/>

.........
..........

当我运行应用程序时,抛出错误

配置错误 描述:处理为此请求提供服务所需的配置文件时发生错误。请查看下面的具体错误详细信息并适当修改配置文件。

分析程序错误消息:无法从配置文件中指定的凭据创建Windows用户令牌。操作系统登录失败时出错:未知用户名或密码错误。

Aspx页面: 我有示例aspx页面,其中我有以下代码从本地计算机移动文件 到网络中的其他机器,通过模拟

protected void Page_Load(object sender, EventArgs e)
 {
 File.Copy(@"C:\temp\CloudURL.txt", @"\\RemoteMachine\D$\temp\CloudURL.txt", true);
}    

2 个答案:

答案 0 :(得分:5)

这就是我为解决这个问题所做的。我希望它会帮助别人。

我正在运行Windows 8.1和IIS 7,并且我收到了与作者相同的消息。

以下是我解决问题的步骤:

1)如果尚未在Windows中设置,请设置帐户的密码以使其与web.config文件中的信息匹配

转到PC设置 - &gt;帐户 - &gt;登录选项并设置密码

2)在IIS Windows功能中添加Windows身份验证

a)右键单击左下角的Windows徽标

b)点击“控制面板”&#39;

c)点击&#39;程序&#39;

d)点击“打开或关闭Windows功能”&#39;

e)在互联网信息服务&#39; - &GT; &#39;万维网服务&#39; - &GT; &#39;安全&#39;,检查&#39; Windows身份验证&#39;

3)重新启动计算机

4)在IIS管理器中,在&#39; IIS&#39;组,点击“认证”

5)确保“ASP.Net模拟”的状态为&#39;和Windows身份验证&#39;已启用

6)重新启动计算机并重新运行解决方案

还要确保您的web.config模拟行包含域,如下所示:

<identity impersonate="true" userName="Domain\user" password="password" />

答案 1 :(得分:4)

我无法分辨,因为你已经正确地阻止了用户名,但是如果你没有用域名完全声明用户名,那么它将因此错误而失败。

您使用的是域名吗?

<identity impersonate="true" userName="domain\user" password="password" />

关于您的设置的其他所有内容似乎都是正确的。

您的域名可以是您所连接的域名,也可以是您的PC名称。找到的一个简单方法是打开命令窗口并输入:

echo %userdomain%