Security 将自定义Asp.net应用程序部署到与Sharepoint相同的IIS站点

Security 将自定义Asp.net应用程序部署到与Sharepoint相同的IIS站点,security,sharepoint,Security,Sharepoint,我正在尝试在与Sharepoint相同的网站上安装Asp.net应用程序。那么sharepoint的url在哪里呢?要访问应用程序,url应该在哪里。我已在此级别设置了IIS应用程序,但尝试使用bin中的自定义dll运行该应用程序会导致错误“请求类型为“Microsoft.SharePoint.Security.SharePointPermission,Microsoft.SharePoint.Security,Version=12.0.0.0,Culture=neutral,PublicKey

我正在尝试在与Sharepoint相同的网站上安装Asp.net应用程序。那么sharepoint的url在哪里呢?要访问应用程序,url应该在哪里。我已在此级别设置了IIS应用程序,但尝试使用bin中的自定义dll运行该应用程序会导致错误

“请求类型为“Microsoft.SharePoint.Security.SharePointPermission,Microsoft.SharePoint.Security,Version=12.0.0.0,Culture=neutral,PublicKeyToken=71e9bce111e9429c”的权限失败。”

我试图对dll进行签名并将其注册到sharepoint服务器GAC,但随后收到:

“System.Security.SecurityException:该程序集不允许部分受信任的调用方。”

如果我从应用程序bin目录中删除DLL,页面将加载,但我会丢失其中所需的功能。

编辑:只有当Dll在bin中时才会发生错误,它不依赖于Dll中的任何一行代码。

IIS版本6 Sharepoint:WSS 3.0 Windows Server 2003


更新:我运行了“caspol-machine-addfulltrust(dll路径)”,它成功了,但我仍然收到相同的错误

一旦您在SharePoint中使用IIS网站(称为SharePoint中的web应用程序),您的ASP.NET应用程序就不再只是一个ASP.NET应用程序。它是一个SharePoint应用程序(当然,SharePoint在ASP.NET上运行)。也就是说,除非您在web.config中翻找,以撤消SharePoint为特定虚拟目录设置的许多http处理程序

但是,将ASP.NET应用程序移动到SharePoint中运行本身并没有什么问题。将您的程序集/关联放入GAC是一个可能有所帮助的步骤,但对您来说似乎失败了。您的程序集是否可以引用不在GAC中的其他程序集?那可能是你的问题


如果程序集不在GAC中,则可以将其用于SharePoint中的ASP.NET页面和web部件(但不包括工作流、事件处理程序、自定义字段、功能接收器等)。但是,这有点痛苦,因为您可能需要设置代码访问安全性(CAS),这不是一个简单的过程。我不确定SPContext.Current.Web.CurrentUser.LoginName是否需要CAS策略,我倾向于仅将其用于Web部件,而不是ASP.NET页面。使用SharePoint快速搜索CAS让我想到了这一点:如果你真的想深入研究CAS,这看起来是一个很好的开始。

是的,caspol.exe是你在这里获得快乐的关键。请参阅。

将排除托管路径添加到SharePoint中,以便它不会试图“干扰”您的自定义web应用程序。

它涉及.NET安全性。有两种方法可以解决这个问题,它们都涉及到向SharePoint站点添加“完全信任”。原因是SharePoint和您的应用程序无法访问彼此的资源

  • 手动方式: 在IIS网站文件夹根目录中的machine.config或web.config文件上添加“完全信任”(通常为“wwwroot”)。这可能不是一个好主意,因为它会让您与SharePoint并行运行的每个ASP.NET应用程序都完全信任。这是一个短期的、严厉的修复,类似于通过使用管理员访问解决所有代码安全问题

  • 自动方式: 对应用程序DLL运行caspol(代码访问安全策略工具)。这有点棘手,因为它要求您对多个文件夹和DLL执行相同的操作。但这是完成你想做的事情最安全的方法


  • 我终于解决了这个问题。我认为部分问题是通过尝试人们提出的不同建议而解决的,但最终解决问题的方法是将“”添加到web.config中。对于任何不知道它的人,应该在system.web部分下。我还需要添加几个dll。将dll添加到GAC有助于解决所有问题,但并没有解决所有问题

    我有一个基本dll,它引用了多个系统dll和Microsoft.Sharepoint.dll。我已经在GAC上签名并注册,还尝试过使用caspol,但没有成功。