Domanda

Ho un modello BDC in uno dei miei progetti di SharePoint. In definitiva questo modello deve essere implementato a 3 ambienti: dev, test e produzione. Ora il mio ambiente Dev ha solo un'applicazione Web sulla porta 80, e questo è quello che il mio modello viene schierato in auto-magicamente.

Per il test e la produzione, è una storia diversa. Tali ambienti hanno il contenuto principale e le mie applicazioni Web di siti sia sulla porta 80, utilizzando intestazioni host. Il problema è che non riesco a distribuire il mio modello BDC nel test o nella produzione senza prima di raccontare il modello che l'applicazione Web di implementare. Per quanto ne so, l'unico modo per farlo è il codice fisso dell'URL assoluto dell'applicazione Web nel modello prima di costruire il WSP. Poiché gli URL sono diversi per ciascun ambiente, devo costruire diversi WSP per dev, test e produzione. Non fresco. Il problema è aggravato dal fatto che l'URL è impostato in un file controllato dalla sorgente. Quindi devo controllare quel file, impostare l'URL, creare il wsp, la distribuzione, il test e quindi annullare il checkout. Preferirei molto avere un processo di costruzione automatizzato con maneggiare questo per me.

Ho letto altrove che questo può essere evitato solo con un'applicazione Web sulla porta 80. è raccomandata? Sembra che i miei siti sul porto 80 potrebbero essere problematici. Ci sono altre raccomandazioni o suggerimenti che mi mancano?

È stato utile?

Soluzione

Se ti capisco correttamente vuoi impostare l'applicazione Web corretta per il tuo modello BCS.In realtà qualsiasi applicazione Web che può connettersi all'applicazione del servizio BCS farà.Ho corso nello stesso problema e ha creato un ricevitore di funzionalità per la funzionalità BCS che distribuisce il tipo di contenuto esterno per impostare dinamicamente l'applicazione Web - quindi funziona in tutti gli ambienti: dev, test, produzione.Nel mio caso tutte le applicazioni Web hanno avuto un proxy dell'applicazione di servizio BCS e quindi ho semplicemente utilizzato la prima applicazione Web.Potrebbe essere diverso in altri scenari.

public class ExternalContentTypesEventReceiver : ImportModelReceiver
{
    /// <summary>
    /// Occurs after a Feature is activated.
    /// The BDC deployment requires a valid site url property to retrieve a service context object.
    /// </summary>
    /// <param name="properties">An <see cref="T:Microsoft.SharePoint.SPFeatureReceiverProperties"/> object that represents the properties of the event.</param>
    public override void FeatureActivated(SPFeatureReceiverProperties properties)
    {
        var farm = properties.Feature.Parent as SPWebService;
        var application = farm.WebApplications.FirstOrDefault();

        var siteUrl = application.AlternateUrls.FirstOrDefault(u => u.UrlZone == SPUrlZone.Default).IncomingUrl;

        // Set site url property so that the external content type can be deployed.
        if (properties.Definition.Properties["SiteUrl"] == null)
        {
            properties.Definition.Properties.Add(new SPFeatureProperty("SiteUrl", siteUrl));
        }

        base.FeatureActivated(properties);
    }

    /// <summary>
    /// Features the deactivating.
    /// The BDC deployment requires a valid site url property to retrieve a service context object.
    /// </summary>
    /// <param name="properties">The properties.</param>
    public override void FeatureDeactivating(SPFeatureReceiverProperties properties)
    {
        var farm = properties.Feature.Parent as SPWebService;
        var application = farm.WebApplications.FirstOrDefault(w => w.Sites.Count > 0);

        var siteUrl = application.AlternateUrls.FirstOrDefault(u => u.UrlZone == SPUrlZone.Default).IncomingUrl;

        if (properties.Definition.Properties["SiteUrl"] == null)
        {
            properties.Definition.Properties.Add(new SPFeatureProperty("SiteUrl", siteUrl));
        }

        base.FeatureDeactivating(properties);
    }

}
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a sharepoint.stackexchange
scroll top