在SharePoint应用程序开发过程中,开发者经常需要将应用程序部署到服务器上。本文将指导开发者如何在IIS上托管SharePoint应用程序,包括创建自签名证书、配置SharePoint、创建IIS站点、在Visual Studio中创建应用程序以及发布和部署应用程序的详细步骤。
为了托管高信任级别的应用程序,需要创建一个自签名证书。以下是创建自签名证书的步骤:
在SharePoint 2013中,需要使用PowerShell脚本来配置SharePoint以使用创建的证书。以下是配置步骤:
# 创建IssuerId
$issuerId = [System.Guid]::NewGuid().ToString().ToLower()
# PowerShell脚本
$publicCertPath = "C:\root\High_Trust_App_1.cer"
$issuerId = ([System.Guid]::NewGuid()).ToString()
$spurl = "http://sp:1984/sites/Devsite"
$spweb = Get-SPWeb $spurl
$sc = Get-SPServiceContext $spweb.site
$realm = Get-SPAuthenticationRealm -ServiceContext $sc
$certificate = Get-PfxCertificate $publicCertPath
$fullIssuerIdentifier = $issuerId + '@' + $realm
New-SPTrustedSecurityTokenIssuer -Name $issuerId -Certificate $certificate -RegisteredIssuerName $fullIssuerIdentifier -IsTrustBroker
请注意,需要根据实际情况修改GUID、站点URL和证书路径。
在IIS中创建一个站点,并在编辑绑定时添加"https"以及创建的证书。创建站点后,确保禁用匿名认证并启用Windows认证。在“认证”下检查Windows认证的提供者是否包含“NTLM”。
选择网站,然后双击“目录浏览”并启用它。现在站点已经准备好了,例如:https://localhost:1650/
在Visual Studio中,点击“新建项目”并选择提供者托管应用程序。在配置认证设置时,点击“使用证书”并提供上述创建的详细信息。
在Visual Studio或Shell命令中创建一个GUID作为“Client Id”。在web.config中添加以下内容:
<appSettings>
<add key="ClientId" value="450d02a5-5f69-46ea-9b56-996c9692663d"/>
<add key="ClientSigningCertificatePath" value="C:\root\test_cert_1.pfx"/>
<add key="ClientSigningCertificatePassword" value="Pass@123"/>
<add key="IssuerId" value="fda8d804-7ba0-4a00-8dfd-d1fcc36f81a2"/>
</appSettings>
并在AppManifest中添加以下内容:
<AppPrincipal>
<RemoteWebApplication ClientId="450d02a5-5f69-46ea-9b56-996c9692663d"/>
</AppPrincipal>
在权限标签下为Web配置完全控制权限。
为了使用证书,需要修改TokenHelper.cs以通过其序列号检索它。删除ClientSigningCertificatePath、ClientSigningCertificatePassword和ClientCertificate,并添加以下代码:
private static readonly string ClientSigningCertificateSerialNumber = WebConfigurationManager.AppSettings.Get("ClientSigningCertificateSerialNumber");
private static readonly X509SigningCredentials SigningCredentials = GetSigningCredentials(GetCertificateFromStore());
在#region private methods下创建一个函数:
private static X509Certificate2 GetCertificateFromStore()
{
if (string.IsNullOrEmpty(ClientSigningCertificateSerialNumber))
{
return null;
}
// Get the machine's personal store
X509Certificate2 storedCert;
X509Store store = new X509Store(StoreName.My, StoreLocation.LocalMachine);
try
{
// Open for read-only access
store.Open(OpenFlags.ReadOnly);
// Find the cert
storedCert = store.Certificates.Find(X509FindType.FindBySerialNumber, ClientSigningCertificateSerialNumber, true).OfType<X509Certificate2>().SingleOrDefault();
}
finally
{
store.Close();
}
return storedCert;
}
并将TokenHelper类中的所有ClientCertificate替换为GetCertificateFromStore()。
创建一个新的配置文件“SampleProfile”。在连接下点击“Web部署包”并给出包位置。指定上述步骤中创建的https站点作为站点/应用程序。点击发布。
创建应用程序包。点击应用程序项目的发布。选择在上述步骤中创建的配置文件。在托管标签中,输入以下值:
点击完成。从app.publish文件夹中,需要上传到指定SharePoint站点的应用程序目录下的“sharepointapp.app”。