1

我有一个奇怪的场景:

我有一个 webpart 调用 GAC 中的一个 dll,它试图从 web.config 文件中读取一个部分。这正常工作,但在 SSL 下它失败了,说它无权访问(配置文件的)路径。但是,它在 mosssvc 帐户下,该帐户可以完全控制 webconfig 文件。

80 web.config 文件和 443 web.config 文件都具有 dll 正在寻找的相同条目,并且 mosssvc 可以完全控制这两个配置。

我尝试将 443 上的信任级别提升到完全,但没有奏效。

有什么想法,或者你能想到的任何我可以尝试的东西吗?

编辑:我应该更清楚:SSL 站点已经创建并且工作正常,直到 GAC 程序集中的一种方法尝试检查 Web 配置。

完整的错误信息是:

Event Type:        Warning
Event Source:    ASP.NET 2.0.50727.0
Event Category:                Web Event 
Event ID:              1310
Date:                     2/9/2009
Time:                     1:44:49 PM
User:                     N/A
Computer:          XXXXX
Description:
Event code: 3008 
Event message: A configuration error has occurred. 
Event time: 2/9/2009 1:44:49 PM 
Event time (UTC): 2/9/2009 9:44:49 PM 
Event ID: 2d7180cdfbb34acfa6c61f95df12ddde 
Event sequence: 26 
Event occurrence: 1 
Event detail code: 0 

Application information: 
    Application domain: YYYYYYYYYYYYYYYYYYYYYYY
    Trust level: Full 
    Application Virtual Path: / 
    Application Path: C:\Inetpub\wwwroot\wss\VirtualDirectories\8443\ 
    Machine name: XXXXXXXX 

Process information: 
    Process ID: 5168 
    Process name: w3wp.exe 
    Account name: XXXXXXXXX\mosssvc 

Exception information: 
    Exception type: ConfigurationErrorsException 
    Exception message: An error occurred loading a configuration file: Access to the path 'C:\Inetpub\wwwroot\wss\VirtualDirectories\8443\web.config' is denied. (C:\Inetpub\wwwroot\wss\VirtualDirectories\8443\web.config) 

Request information: 
    Request URL: https://XXXXXXX:443/training/Pages/smartregister.aspx?c=383 
    Request path: /training/Pages/smartregister.aspx 
    User host address: 64.34.27.186 
    User:  
    Is authenticated: False 
    Authentication Type:  
    Thread account name: XXXXXXX\mosssvc 

Thread information: 
    Thread ID: 10 
    Thread account name: XXXXXXX\mosssvc 
    Is impersonating: True 
    Stack trace:    at System.Configuration.ConfigurationSchemaErrors.ThrowIfErrors(Boolean ignoreLocal)
   at System.Configuration.BaseConfigurationRecord.ThrowIfParseErrors(ConfigurationSchemaErrors schemaErrors)
   at System.Configuration.Configuration..ctor(String locationSubPath, Type typeConfigHost, Object[] hostInitConfigurationParams)
   at System.Configuration.Internal.InternalConfigConfigurationFactory.System.Configuration.Internal.IInternalConfigConfigurationFactory.Create(Type typeConfigHost, Object[] hostInitConfigurationParams)
   at System.Web.Configuration.WebConfigurationHost.OpenConfiguration(WebLevel webLevel, ConfigurationFileMap fileMap, VirtualPath path, String site, String locationSubPath, String server, String userName, String password, IntPtr tokenHandle)
   at System.Web.Configuration.WebConfigurationManager.OpenWebConfigurationImpl(WebLevel webLevel, ConfigurationFileMap fileMap, String path, String site, String locationSubPath, String server, String userName, String password, IntPtr userToken)
   at System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration(String path)
   at XXXXXXXXX.RegistrationHelper.RegisterStudents(Boolean sendEmail, String Time, String Title, String bFirstName, String bLastName, String bAddress, String bPostalCode, String bCity, String bTelephone, String bCompany, String bEmail, List`1 Registrants, Int32 courseDateID, String pType, String CCNumber_, String NameOnCard, String cExpiry, Double Discount, String DiscountCode, Double CostPerRegistrant, String PurchaseOrder)
   at ASP.SmartEventRegistration.lnkSubmit_Click(Object sender, EventArgs e) in c:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\CONTROLTEMPLATES\SmartEventRegistration\SmartEventRegistration.ascx:line 401
   at System.Web.UI.WebControls.LinkButton.OnClick(EventArgs e)
   at System.Web.UI.WebControls.LinkButton.RaisePostBackEvent(String eventArgument)
   at System.Web.UI.WebControls.LinkButton.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument)
   at System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument)
   at System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData)
   at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
   at System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
   at System.Web.UI.Page.ProcessRequest()
   at System.Web.UI.Page.ProcessRequestWithNoAssert(HttpContext context)
   at System.Web.UI.Page.ProcessRequest(HttpContext context)
   at Microsoft.SharePoint.Publishing.TemplateRedirectionPage.ProcessRequest(HttpContext context)
   at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
   at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
4

1 回答 1

1

试试这个,从Faranz Kan SharePoint 博客中了解如何在 MOSS 中启用 SSL:

  1. 转到中央管理 --> 创建或扩展一个新的 Web 应用程序 --> 创建一个新的 Web 应用程序。
  2. 像往常一样填写 Web 应用程序、数据库和应用程序池名称。选择是以在 Web 应用程序上启用 SSL。如果您为此 Web 应用程序使用主机标头,请也输入这些标头。(重要提示:确保将端口设置为 443,而不是 80)。
  3. 创建 Web 应用程序后,重置 IIS,然后打开 IIS mmc。滚动到 MOSS 刚刚为您创建的 IIS 网站,然后从可用证书中选择正确的 SSL 证书(要求您的网络人员为您生成内部或外部 SSL 证书,具体取决于这是测试服务器还是生产服务器)。重要提示:转到主目录选项卡并单击高级。确保为端口 80 设置主机标头和正确的 IP。对于 SSL 条目,选择端口 443 和 IP。(如果您在服务器上有多个 IP,我通常会在这里为这些条目选择一个)。单击 SSL 条目的编辑按钮并选中“需要 SSL”框。还要检查“需要 128 位加密”以使其更安全。
  4. 现在继续为这个 Web 应用程序创建您的第一个网站集。MOSS 将自动为您创建一个新的网站集,并在完成后向您显示“https://..”链接。您现在应该有一个支持 SSL 的 Web 应用程序。
  5. 默认情况下,如果您希望多个 Web 应用在同一服务器上使用 SSL
    • 这在 IIS 6 中不起作用。如果您希望多个 MOSS 2007 Web 应用程序启用 SSL,有两种方法可以解决此问题。一种方法是为该 Web 服务器获取尽可能多的 IP,并在 IIS 网站属性 --> 主目录 --> 高级下为端口 80 和 443 的端口 80 和 443 为每个主机头设置分配一个 IP。另一种选择是修改 IIS 元数据库以允许同一 IP 上的多个 SSL Web 应用程序。小心第二个选项,并确保你知道你在做什么。
于 2009-02-10T03:59:24.140 回答