如何用C#编制一个WEB SERVER???有没有相关资料,或给个思路,现在虽然已经可以解析ASPX文件,但是URL中传参和FORM 都还不行,还有编码的问题,不知道大家有没有碰到过!!!
解决方案 »
- 爬虫中如何实现内容去重,有什么好的算法?求大神!!
- RadioButton控件对checked属性的封装问题?
- 如何快速显示二进制读入的数据呢?(可能描述有错)
- 周末 散分50!
- 急求!有谁知道QQ软件/卡巴斯基软件升级原理
- 我的javascript载入不了xml文件,不知道怎么搞的
- GC的问题
- 急!求救:打开web项目时,提示“无法打开web项目,文件路径c:\wwwroot\与URLhttp://localhost/不符,两者需要映射相同的位置”HTTP错误4
- 在C/S中如何做象会计凭证的表格
- C# 如何获取远程POST过来Payload的值
- 如何隐藏datagridview中左边黑箭头的那列,而不隐藏其他列
- 变量值的转换
2.点击项目右键->添加->添加Web服务
3代码如下 例添加一个叫 TEST.ASMX 的服务
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Web;
using System.Web.Services;namespace WebServertest
{
/// <summary>
/// User_Info 的摘要说明。
/// </summary>
public class Test: System.Web.Services.WebService
{
/// <summary>
/// Test 构造函数
/// </summary>
public Test()
{
//CODEGEN: 该调用是 ASP.NET Web 服务设计器所必需的
InitializeComponent();
} #region 组件设计器生成的代码
//Web 服务设计器所必需的
private IContainer components = null;
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
} /// <summary>
/// 清理所有正在使用的资源。
/// </summary>
protected override void Dispose( bool disposing )
{
if(disposing && components != null)
{
components.Dispose();
}
base.Dispose(disposing);
}
#endregion // WEB 服务示例
// HelloWorld() 示例服务返回字符串 Hello World
// 若要生成,请取消注释下列行,然后保存并生成项目
// 若要测试此 Web 服务,请按 F5 键
/// <summary>
/// 获取测试信息
/// </summary>
/// <param name="TestString">测试字串</param>
/// <returns>返回测试字串</returns>
[WebMethod]
public string GetTestString(string TestString)
{
return TestString;
}
}
}4.GetTestString 就是你这个WebServer的一个公开方法以供其他程序调用
点击项目右键->添加->添加Web服务在Web服务方法前加上[WebMethod]即可以向外发布!
将WebService编译为代理类,需要用到WSDL.exe这个工具。编译命令如下:
C:\Documents and Settings\Administrator>"D:\Microsoft Visual Studio .NET 2003\SD
K\v1.1\Bin\wsdl.exe" /out:c:\aaa.cs http://localhost/Read/CompanyService.asmx?wsdl编译后可以形成代理类,将代理类发给客户机,客户机通过代理类可以和服务器通信。
代理类的URL部分代码如下:
。。
/// <res/>
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Web.Services.WebServiceBindingAttribute(Name="FDAServiceSoap", Namespace="http://tempuri.org/")]
public class WSSentToFDA : System.Web.Services.Protocols.SoapHttpClientProtocol {
/// <res/>
public WSSentToFDA() {
//原始的代码是:this.Url = http://***/Read/CompanyService.asmx;
//下面是修改后的代码,从XML文件中读出URL地址。
ReadVersion.AccountManage.ReadXmlFiles rd = new ReadVersion.AccountManage.ReadXmlFiles();
string s = rd.ReadIPAddress("xiangshan");
if( s!="no")
this.Url = s;
else
this.Url = "" ;
}。如果要通过构造函数传参数。则如下:
public class WSSentToFDA : System.Web.Services.Protocols.SoapHttpClientProtocol {
/// <res/>
public WSSentToFDA(string strUrl) { this.url=strUrl;
}.....
http://www.codeproject.com/cs/internet/mywebserver.asp