最近在项目开发的过程中自己遇到一些问题也有项目组的MM问的一些问题,这里列出了相应的解决方法,可能并不全面,但应该有些参考意义,有些是google出来的,也有一些是自己摸索出来的,有中文的,也有英文的.
1. "System.Security.SecurityException: 安全错误"在 ASP.NET 中该虚拟目录指向远程共享时出现错误信息
症状
当您使用指向远程共享来承载 Microsoft 基于 ASP.NET 的应用程序的一个虚拟目录时,您可能会收到与以下之一类似的错误消息:
消息 1
安全异常描述: 应用程序试图执行安全策略不允许的操作。 若要授予该应用程序所需的权限请与您的系统管理员联系或更改配置文件中的应用程序的信任级别。
异常详细信息: System.Security.SecurityException: 安全错误。
源错误:
行 30: private 静态 bool __intialized = false; 行 31: 行 32: 公用 Global_asax() {行 33: 如果 ((ASP.Global_asax.__intialized == false)) {行 34: ASP.Global_asax.__intialized = true;
邮件 2
中的服务器错误 / ApplicationName 应用程序。
分析器错误说明: 该请求提供服务所需资源的分析时遇到错误。 请检查下列特定分析错误详细信息并适当地修改您的源文件。
分析器错误信息: 无法无法加载类型 ApplicationName.Global。
源错误: 行 1: < %@ 应用程序 codebehind="Global.asax.cs"Inherits ="ApplicationName.Global"%> 源文件:Path of Application \global.asax 行: 1
原因
System.Web 命名空间不具有 AllowPartiallyTrustedCallersAttribute 属性 应用于。 有关更多信息,请访问下面的 Microsoft Developer Network (MSDN) Web 站点:
http://msdn2.microsoft.com/en-us/library/ms994923.aspx (http://msdn2.microsoft.com/en-us/library/ms994923.aspx)
不在 My_Computer_Zone 代码组不具有此属性中的任何代码要求具有 FullTrust 用户权限。 因此,包含 Web 应用程序内容的远程共享需要 FullTrust。
解决方案
若要解决此问题,授予 FullTrust 权限到远程共享:
1) 在 Web 服务器上, 打开管理工具,然后双击 Microsoft .NET Framework 配置 。 |
|
2) 展开 运行库安全策略 ,展开 计算机 ,然后展开 代码组 。 |
|
3) 用鼠标右键单击 All _ Code ,然后单击 新建 。 |
|
4) 选择 创建新的代码组 。 为您的代码组指定一个相关名称,如应用程序共享的名称。 单击 下一步 。 |
|
5) 在 选择条件类型对此代码组 列表,选择 URL 。 |
|
6) 在 URL 框,键入以下列格式共享的路径: 7) file:////\\ computername \ sharename \ * 8) 注意 computername 替换为承载远程共享计算机的名称。 sharename 替换为共享的名称。 |
|
9) 单击 下一步 。 在下一页上, 选择 使用现有权限集 ,然后选择 FullTrust 。 |
|
10) 单击 下一步 ,然后单击 完成 。 |
|
11) 重新启动 Microsoft Internet 信息服务 (IIS) 重新启动 ASP.NET 辅助进程。 |
如果 Microsoft .NET Framework 配置 则不会显示在 管理工具 下,您可以安装 .NET Framework SDK 将 Microsoft .NET Framework 配置 。 此外,您可以运行以下命令,以使更改:
Drive: \WINDOWS\Microsoft.NET\Framework\v2.0.50727\caspol.exe-m-ag 1-url"file:////\\ computername \ sharename \ *"上的排他 FullTrust-
注意 有关这些参数做什么的信息,运行以下命令:
caspol.exe-?
在这种配置,运行 ASP.NET 工作进程帐户必须有足够的权限来远程共享。 您可以设置在 Machine.config 文件中使用 Processmodel 标记在辅助进程运行帐户
重现该问题的步骤
1) 创建一个新的虚拟目录指向远程共享。 |
|
2) 创建一个应用程序为虚拟目录。 确保连接到该共享用户具有对远程内容的读访问。 |
|
3) 在 Machine.config 文件的 Processmodel 标记,用户更改为域用户具有列表,读取,和在远程共享上执行权限。 |
|
4) 创建嵌入式.aspx 文件,然后将文件放在远程共享。 |
|
5) 发出一个请求页。 |
2. SecurityException: Requested registry access is not allowed
1) Give the ASPNET user permission to read the Security eventlog registry entry.
Run regedit
Navigate to the following key:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Security
Right click on this entry and select Permissions
Add the ASPNET user
Give it Read permission
2) Change settings in machine.config file
Run Explorer
Navigate to WINDOWS or WINNT folder
Open Microsoft.NET folder
Open Framework folder
Open v1.1.4322 folder (folder name may be different, depending on what dotnet version is installed)
Open CONFIG folder
Open machine.config file using notepad (make a backup of this file first)
Locate processmodel tag (approx. at line 441)
Locate userName="machine" (approx. at line 452)
Change it to userName="SYSTEM"
Save and close the file
Close Explorer
3) Restart IIS
Run IISReset
如果这个方案不行的话,在第一步修改注册表的时候,以下两个为备选方案:、
1. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Security
右键选择权限->添加 Network Service 帐号,选择Full Control
2. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog
右键选择权限->添加 IUSR_machinename,选择FullControl
再重得以上2,3步骤
3. Service Unavaible
您浏览一个 Windows SharePoint Services Web 站点时,您可能会收到下面的错误信息:
Service Unavailable
原因
如果 Microsoft Internet 信息服务 (IIS) 6.0 中没有正确地配置用于虚拟服务器的应用程序池,就可能会发生此问题。此问题可能会在存在下列一种或多种情况时发生: •应用程序池没有运行。
•应用程序池帐户使用的密码不正确。
•应用程序池帐户不是服务器上的 IIS_WPG 和 STS_WPG 这两个组的公共成员。
解决方案
要解决此问题,请按照下列步骤操作:
1. 验证是否已为虚拟服务器配置了应用程序池。默认的应用程序池是 MSSharePointPortalAppPool
请按照下列步骤来确定虚拟服务器正在使用的应用程序池
1) 单击“开始”,指向“管理工具”,然后单击“Internet 信息服务 (IIS) 管理器”。. 展开“ServerName”,
2) 展开“Web 站点”,右键单击虚拟服务器,然后单击“属性”。
3) 单击“主目录”选项卡。为虚拟服务器配置的应用程序池列在“应用程序池”框中。
4) 单击“确定”。
2. 验证应用程序池帐户使用的密码是否正确
IIS 不会自动轮询 Active Directory 目录服务中的密码更改。如果应用程序池帐户是一个域帐户,其密码已过期,则在为此帐户重新指定一个新密码后,您可能会收到本文“症状”部分所描述的错误信息。
请按照下列步骤来验证应用程序池帐户所用的密码是否正确:
1) 在 Internet 信息服务 (IIS) 管理器中,展开“应用程序池”
2) 右键单击为虚拟服务器配置的应用程序池(例如,右键单击“MSSharePointPortalAppPool”),然后单击“属性
3) 单击“标识”选项卡
4) 在“密码”框中,键入列在“用户名”框中的应用程序池帐户所用的密码,然后单击“确定”
在“确认密码”对话框中,再次键入密码,然后单击“确定”
3. 验证应用程序池帐户是服务器上的 IIS_WPG 组和 STS_WPG 组的成员
根据您的具体情况选用下列方法之一
A. 在成员服务器上安装了 SharePoint Portal Server 的情况下:
1) 单击“开始”,指向“管理工具”,然后单击“计算机管理”
2) 展开“本地用户和组”,然后展开“用户”
3) 右键单击虚拟服务器的应用程序池使用的帐户,然后单击“属性”
4) 单击“成员属于”选项卡
验证 IIS_WPG 和 STS_WPG 是否都出现在“成员属于”列表中。如果其中之一没有列出或者两者均未列出,请根据具体情况将 IIS_WPG 组、STS_WPG 组或者这两个组添加到列表中。
B. 在域控制器上安装了 SharePoint Portal Server 的情况下:
1) 启动“Active Directory 用户和计算机”
2) 展开“用户”
3) 右键单击虚拟服务器的应用程序池使用的帐户,然后单击“属性”
4) 单击“成员属于”选项卡
验证 IIS_WPG 和 STS_WPG 都出现在“成员属于”列表中。
如果其中之一没有列出或者两者均未列出,请根据具体情况将 IIS_WPG 组、STS_WPG 组或者这两个组添加到列表中。
4. 重新启动 IIS 以回收应用程序池:
1) 在 Internet 信息服务 (IIS) 管理器中,右键单击“ServerName”,指向“所有任务”,然后单击“重新启动 IIS”
2) 单击“在 ServerName 上重新启动 Internet 信息服务”,然后单击“确定”