v9.8.2018.0605   由DataReader直接映射实体列表,以支持netstandard的MySql和SQLite,且提升性能
大石头 authored at 2018-06-05 00:45:23
6.04 KiB
X
@using System.Diagnostics;
@using System.Collections;
@using System.Reflection;
@using System.Runtime.Versioning;
@using NewLife.Common;
@using NewLife.Web;
@{
    Layout = NewLife.Cube.Setting.Current.Layout;

    ViewBag.Title = "服务器信息";

    var asm = Assembly.GetExecutingAssembly();
    var att = asm.GetCustomAttribute<TargetFrameworkAttribute>();
    var ver = att.FrameworkDisplayName ?? att.FrameworkName;
    var req = HttpContext.Current.Request;
}
<table class="table table-bordered table-hover table-striped table-condensed">
    <thead>
        <tr>
            <th colspan="4">
                服务器信息
            </th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td class="name">
                应用系统:
            </td>
            <td class="value">
                @HttpRuntime.AppDomainAppVirtualPath&nbsp;
                @if (this.Has((PermissionFlags)16))
                {
                    <a href="@Url.Action("Restart")" onclick="return confirm('仅重启ASP.Net应用程序域,而不是操作系统!\n确认重启?')">重启应用系统</a>
                }
                &nbsp;&nbsp;&nbsp;&nbsp;@req.GetRawUrl()
            </td>
            <td class="name">
                目录:
            </td>
            <td class="value">
                @HttpRuntime.AppDomainAppPath
            </td>
        </tr>
        <tr>
            <td class="name">
                域名地址:
            </td>
            <td class="value">
                <span title="SERVER_NAME">@Request.ServerVariables["SERVER_NAME"]</span>,
                <span title="LOCAl_ADDR">@Request.ServerVariables["LOCAl_ADDR"]:@Request.ServerVariables["Server_Port"]</span>
                &nbsp;<span title="REMOTE_HOST">[@Request.ServerVariables["REMOTE_HOST"]]</span>
                <a href="@Url.Action("Main/ServerVar")" target="_blank" title="点击打开服务器变量列表">服务器变量列表</a>
            </td>
            <td class="name">
                计算机用户:
            </td>
            <td class="value">
                @Environment.UserName/@Environment.MachineName
            </td>
        </tr>
        <tr>
            <td class="name">
                应用程序域:
            </td>
            <td class="value">
                @AppDomain.CurrentDomain.FriendlyName
                <a href="@Url.Action("Main/Assembly")" target="_blank" title="点击打开进程程序集列表">程序集列表</a>
            </td>
            <td class="name">
                .Net 版本:
            </td>
            <td class="value">
                @Environment.Version &nbsp;@ver
            </td>
        </tr>
        <tr>
            <td class="name">
                操作系统:
            </td>
            <td class="value">
                @Runtime.OSName
            </td>
            <td class="name">
                Web服务器:
            </td>
            <td class="value">
                @ViewBag.WebServerName
            </td>
        </tr>
        <tr>
            <td class="name">
                处理器:
            </td>
            <td class="value">
                @Environment.ProcessorCount
                核心
            </td>
            <td class="name">
                时间:
            </td>
            <td class="value" title="这里使用了服务器默认的时间格式!后面是开机时间。">
                @DateTime.Now,开机@(new TimeSpan(0, 0, 0, 0, Environment.TickCount))
            </td>
        </tr>
        <tr>
            @{ var process = Process.GetCurrentProcess();}
            <td class="name">
                内存:
            </td>
            <td class="value">
                物理内存:@(Runtime.AvailableMemory.ToString("n0"))M / @(Runtime.PhysicalMemory.ToString("n0"))M
                工作集: @((process.WorkingSet64 / 1024 / 1024).ToString("n0"))M
                提交: @((process.PrivateMemorySize64 / 1024 / 1024).ToString("n0"))M
                GC: @((GC.GetTotalMemory(false) / 1024 / 1024).ToString("n0"))M
                <a href="@Url.Action("Main/ProcessModules")" target="_blank" title="点击打开进程模块列表">模块列表</a>
            </td>
            <td class="name">
                进程时间:
            </td>
            <td class="value">
                @process.TotalProcessorTime.TotalSeconds.ToString("N2")秒 启动于 @process.StartTime.ToFullString()
            </td>
        </tr>
        <tr>
            <td class="name">
                Session:
            </td>
            <td class="value">
                @Session.Contents.Count 个,@Session.Timeout 分钟,SessionID:@Session.Contents.SessionID
                <a href="@Url.Action("Main/Session")" target="_blank" title="点击打开Session列表">Session列表</a>
            </td>
            <td class="name">
                Cache:
            </td>
            <td class="value">
                @Cache.Count 个,可用:@((Cache.EffectivePrivateBytesLimit / 1024).ToString("n0"))KB
                <a href="@Url.Action("Main/Cache")" target="_blank" title="点击打开Cache列表">Cache列表</a>
            </td>
        </tr>
    </tbody>
</table>
<table class="table table-bordered table-hover table-striped table-condensed">
    <thead>
        <tr>
            <th>名称</th>
            <th>标题</th>
            <th>文件版本</th>
            <th>内部版本</th>
            <th>编译时间</th>
            <th>描述</th>
        </tr>
    </thead>
    <tbody>
        @foreach (AssemblyX item in ViewBag.MyAsms)
        {
            <tr>
                <td>@item.Name</td>
                <td>@item.Title</td>
                <td>@item.FileVersion</td>
                <td>@item.Version</td>
                <td>@item.Compile.ToFullString()</td>
                <td>@item.Description</td>
            </tr>
        }
    </tbody>
</table>