C# 从控制台应用程序通过WCF服务更新asp页面中的文本框值
我有一个c#控制台应用程序计划在Win2003服务器上运行,读取磁盘空间、cpu使用率等值 现在我想在aspx页面上在线或实时显示这些值 这是我迄今为止(非工作)的尝试: WCF服务:C# 从控制台应用程序通过WCF服务更新asp页面中的文本框值,c#,asp.net,wcf,service,C#,Asp.net,Wcf,Service,我有一个c#控制台应用程序计划在Win2003服务器上运行,读取磁盘空间、cpu使用率等值 现在我想在aspx页面上在线或实时显示这些值 这是我迄今为止(非工作)的尝试: WCF服务: using System; using System.Collections.Generic; using System.Linq; using System.Runtime.Serialization; using System.ServiceModel; using System.Text; namespa
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();
}
}
}
Default.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>
但是,该值不会发送到asp页面
比尔,
Peer我真的建议使用jQuery和restfulwcf服务。查看这篇关于CodeProject的精彩文章:
一开始这看起来像是额外的工作,但对于您正在努力实现的目标来说,这绝对是值得的。调试WCF服务时会发生什么?将调试器附加到它并调用该方法。
static void UpdateList(string columnName, decimal diskSpaceValue)
{
Service1 serv = new Service1();
DataValues dv = new DataValues();
dv.FreeDiskSpace = diskSpaceValue;
serv.InsertDataValues(dv);
}