修复: 无法编译代码隐藏文件在 UNC 共享使用 Src 属性

文章翻译 文章翻译
文章编号: 313105 - 查看本文应用于的产品
本文已归档。它按“原样”提供,并且不再更新。
展开全部 | 关闭全部

本文内容

症状

当您编译 Web 窗体,编译可能失败在 ASP.NET 中,您可能会收到以下错误消息 (或类似的):
编译器错误消息: CS2001: 源文件
找不到 \\server\sharename\webform1.aspx.cs。
如果满足下列条件,则返回 true,则会发生此错误:
  • 使用代码隐藏模型。
  • 在页与 属性中使用动态编译和 Src 属性指向通过使用通用命名约定 (UNC) 的远程计算机上的文件共享。
  • 在 Web.config 文件中启用模拟。

原因

出现此问题的原因是启动编译器时使用的一个的工作进程标识和工作进程可能无法读取远程共享。由于 ASP.NET 使用模拟令牌来阅读页,ASP.NET 成功读取该页。

解决方案

若要解决此问题,请使用下列方法之一:
  • 为用于辅助进程的帐户的共享访问。如果您使用的系统帐户或 $ 网络服务,可以对计算机帐户授予访问权限。

    若要授予访问该计算机帐户的权限,请按照下列步骤操作:
    1. 右键单击共享,然后单击 属性
    2. 共享 选项卡上单击 权限,然后单击 添加
    3. 键入在 Web 服务器的名称,然后单击 检查姓名。这将显示为 $ 在 共享权限权限 对话框中为此共享的计算机名。
  • 使用预编译动态链接库 (dll) 而不是动态编译的代码隐藏文件。
  • 使用单个的页面文件,而不是代码隐藏文件。
  • 作为可访问共享的帐户运行工作进程。若要此配置使用 $ processModel 元素的 Machine.config 文件的用户名称和密码属性。

状态

Microsoft 已经确认这是在本文开头列出的 Microsoft 产品中的错误。此 bug 已被更正中 (包含在.net 框架中) 的 ASP.NET 1.1 和.net Framework 1.1。

更多信息

重现行为的步骤

  1. 创建名为 Webform1.aspx.aspx 页。
  2. 使用下面的示例之一的页指令:
    <%@ Page language="c#"  Codebehind="WebForm1.aspx.cs"  Src = "WebForm1.aspx.cs" %>
    					
    -或者-
    <%@ Page language="vb"  Codebehind="WebForm1.aspx.vb"  Src = "WebForm1.aspx.vb" %>
    					
  3. 创建一个代码隐藏页,并根据您在步骤 2 中选择页指令命名。
  4. 将域用户 (域名 \ 用户名) 作为管理员添加到计算机。
  5. 创建一个共享,然后向域用户只能授予完全权限。
  6. 在 Internet 服务管理器中创建一个 Microsoft Internet 信息服务器 (IIS) 应用程序,然后再使用该域名 \ 用户名,为连接-作为。
  7. 指向先前创建的共享的应用程序中创建虚拟目录。
  8. 将该 WebForm1.aspx 和代码隐藏文件移动到该共享。
  9. 创建一个新的 Web.config 文件,然后添加下面的代码:
    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
      <system.web>
        <authentication mode="Windows" />
        <identity impersonate="true" userName="domain\user" password="password" /> 
     </system.web>
    </configuration>
    					
  10. 将在 Web.config 文件复制到 Web 应用程序将文件添加到 IIS 应用程序的虚拟目录。
  11. 浏览到该网页。

属性

文章编号: 313105 - 最后修改: 2014年2月24日 - 修订: 2.3
这篇文章中的信息适用于:
  • Microsoft ASP.NET 1.0
  • Microsoft .NET Framework 1.0
关键字:?
kbnosurvey kbarchive kbmt kbfix kbbug kbconfig kbdeployment kbnofix kbreadme kbsecurity kbweb KB313105 KbMtzh
机器翻译
注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。
点击这里察看该文章的英文版: 313105
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com