1

ディスク容量、CPU 使用率などの値を読み取る Windows 2003 サーバーで実行するようにスケジュールされた ac# コンソール アプリケーションがあります。

これらの値を aspx ページにオンラインまたはリアルタイムで表示したいと考えています。

これまでのところ、これは私の(機能していない)試みです:

WCF サービス:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;

namespace ServerMonitoring
{
    public class Service1 : IService1
    {

        public void InsertDataValues(DataValues server)
        {
            FreeDiskSpace = server.FreeDiskSpace;
            Data.FreeDiskSpace = FreeDiskSpace;
        }

        [DataMember]
        public decimal FreeDiskSpace
        {
            get { return Data.FreeDiskSpace; }
            set { Data.FreeDiskSpace = value; }
        }

    }
}

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;

namespace ServerMonitoring
{
    [ServiceContract]
    public interface IService1
    {        
        [OperationContract]
        void InsertDataValues(DataValues server);
    }

    [DataContract]
    public class DataValues
    {
        [DataMember]
        public decimal FreeDiskSpace;
        /*
        [DataMember]
        public decimal TotalDiskSpace;
        */
    }
}

コードビハインドからテキストボックスを更新してみてください:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace ServerMonitoring
{
    public partial class _Default : System.Web.UI.Page
    {
       protected void Page_Load(object sender, EventArgs e)
       {
        TextBox1.Attributes.Add("onchange", "DefaultValue();");
        HiddenFieldFreeDiskSpace.Value = Data.FreeDiskSpace.ToString();

        }
    }
} 

デフォルト.aspx:

<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master"                 
AutoEventWireup="true"
CodeBehind="Default.aspx.cs" Inherits="ServerMonitoring._Default" %>

<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="head">
    <script type="text/javascript">
        function DefaultValue() {
            var data = $('#<%=HiddenFieldFreeDiskSpace.ClientID%>').val(); 
            var txt1 = document.getElementById("TextBox1");
            txt1.setAttribute("value", data);
        }
    </script>
</asp:Content>
<asp:Content ID="BodyContent" runat="server"     ContentPlaceHolderID="ContentPlaceHolder1">
    <div class="extra-wide-column">
        <h2>
            FIC Server Monitoring Services
        </h2>
        <br />
        <br />
        <br />
        <h3>System</h3>
        <asp:UpdatePanel ID="UpdatePanel1" runat="server">
            <ContentTemplate>
               <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
               <asp:HiddenField runat="server" ID="HiddenFieldFreeDiskSpace" />
            </ContentTemplate>
        </asp:UpdatePanel>
    </div>
</asp:Content> 

テキスト ボックスに書き込まれる値は、WCF サービスへの参照を使用してコンソール アプリから取得されます。

static void UpdateList(string columnName, decimal diskSpaceValue)
    {
        Service1 serv = new Service1();
        DataValues dv = new DataValues();
        dv.FreeDiskSpace = diskSpaceValue;
        serv.InsertDataValues(dv);

    } 

ただし、値はaspページに送信されません

BR、ピア

4

1 に答える 1

0

RESTful WCF サービスで jQuery を使用することを強くお勧めします。CodeProject に関するこの素晴らしい記事をチェックしてください。

http://www.codeproject.com/Articles/128478/Consuming-WCF-REST-Services-Using-jQuery-AJAX-Call

最初は余分な作業のように思えるかもしれませんが、達成しようとしているものにとっては間違いなく価値があります。

于 2012-09-05T14:36:10.577 に答える