Используя номер версии веб-приложения от блока (ASP.NET/C#)

Решение:

public DataSource getDefaultDataSource() throws SQLException {
    OracleDataSource dataSource = new OracleDataSource();
    dataSource.setUser(userName);
    dataSource.setPassword(password);
    dataSource.setURL(wallet);
    Properties props = new Properties();
    props.put("oracle.jdbc.autoCommitSpecCompliant", "false");
    dataSource.setConnectionProperties(props );
    return dataSource;
}
54
задан David Duffett 4 January 2012 в 03:13
поделиться

5 ответов

Я предпочитаю Web.Config для хранения текущей версии сайта.

Вы также можете попробовать создать файл AssemblyInfo.cs в корне веб-приложения, который имеет следующее:

using System.Reflection;
using System.Runtime.CompilerServices;
...
[assembly: AssemblyVersion("1.0.*")]
...

, а затем получить доступ к значению с помощью кода, подобного следующему:

System.Reflection.Assembly.GetExecutingAssembly()

Вот более информация в класс AssemblyInfo.

27
ответ дан 7 November 2019 в 07:41
поделиться

Некоторая информация здесь: http://www.velocityreviews.com/forums/showpost.php?p=487050&postcount=8

в asp.net 2.0 каждая страница построена в его собственную сборку, поэтому только dll AssemblyInfo.cs встроен в будет верните правильный ответ. просто добавьте статический метод для AssemblyInfo.cs, который возвращает информацию о версии и вызывает этот метод с других ваших страниц.

- bruce (sqlwork.com)

Но я написал простой метод для этого:

    public static string GetSystemVersion(HttpServerUtility server)
    {
        System.Xml.XmlDocument doc = new System.Xml.XmlDocument();
        doc.Load(server.MapPath("~/web.config"));
        System.Xml.XmlNamespaceManager ns = new System.Xml.XmlNamespaceManager(doc.NameTable);
        ns.AddNamespace("bla", "http://schemas.microsoft.com/.NetConfiguration/v2.0");

        System.Xml.XmlNode node = doc.SelectSingleNode("/bla:configuration/bla:system.web/bla:authentication/bla:forms[@name]", ns);

        string projectName = "";
        if (node != null && node.Attributes != null && node.Attributes.GetNamedItem("name") != null)
            projectName = node.Attributes.GetNamedItem("name").Value; //in my case, that value is identical to the project name (projetname.dll)
        else
            return "";

        Assembly assembly = Assembly.Load(projectName);
        return assembly.GetName().Version.ToString();
    }
1
ответ дан 7 November 2019 в 07:41
поделиться

Если вы ищете это из веб-элемента управления, один из способов взлома - найти тип страницы с выделенным кодом (т. Е. Класс, наследуемый от System.Web.UI.Page) . Обычно это делается в веб-сборке потребителя.

Type current, last;
current = Page.GetType();
do
{
    last = current;
    current = current.BaseType;
} while (current != null && current != typeof(System.Web.UI.Page));
return last;

Надеюсь, есть способ лучше.

1
ответ дан 7 November 2019 в 07:41
поделиться

Для добавления к уже отправленным респондентам. Чтобы получить версию для сборки в веб-приложении ASP.Net, вам нужно поместить в код за файлом метод, аналогичный:

protected string GetApplicationVersion() {
    return System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString();
}

На странице ASPX вы хотите просто поместить:

<%= GetApplicationVersion() %>
14
ответ дан 7 November 2019 в 07:41
поделиться
Version version = new Version(Application.ProductVersion);
string message = version.ToString();
2
ответ дан 7 November 2019 в 07:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: