1using System;
2using System.Collections.Generic;
3using System.Text;
4
5using System;
6using System.Data;
7using System.DirectoryServices;
8using System.Collections;
9
10namespace IISManage
11{
12 /**////<summary>
13 /// IIS管理类,可以实现创建站点、虚拟目录,删除虚拟目录等 ///
14 /// </summary>
15 public class IISManager
16 {
17
18 private string _server, _website, _AnonymousUserPass, _AnonymousUserName;
19 private VirtualDirectories _virdirs;
20 protected System.DirectoryServices.DirectoryEntry rootfolder;
21 private bool _batchflag;
22
23
24 构造函数#region 构造函数
25 /**//// <summary>
26 /// 构造函数 ///
27 /// </summary>
28 public IISManager()
29 {
30 //默认情况下使用localhost,即访问本地机
31 _server = "localhost"; _website = "1"; _batchflag = false;
32 }
33
34
35 /**//// <summary>
36 /// 构造函数
37 /// </summary>
38 /// <param name="strServer">服务器</param>
39 public IISManager(string strServer)
40 {
41 _server = strServer;
42 _website = "1"; _batchflag = false;
43 }
44
45
46 /**//// <summary>
47 /// 构造函数
48 /// </summary>
49 /// <param name="strServer">服务器</param>
50 /// <param name="website">站点,每一个站点为1,第二个站点为2,依此类推</param>
51 public IISManager(string strServer, int website)
52 {
53 _server = strServer;
54 _website = website.ToString();
55 _batchflag = false;
56 }
57 #endregion #region 定义公共属性
58
59
60 /**//// <summary>
61 /// 匿名访问用户
62 /// </summary>
63 public string AnonymousUserName
64 {
65 get { return _AnonymousUserName; }
66 set { _AnonymousUserName = value; }
67 }
68
69
70 /**//// <summary>
71 /// 匿名访问用户密码
72 /// </summary>
73 public string AnonymousUserPass
74 {
75 get { return _AnonymousUserPass; }
76 set { _AnonymousUserPass = value; }
77 }
78
79
80 /**//// <summary>
81 /// 服务器,可以是IP或计算名
82 /// </summary>
83 public string Server
84 {
85 get { return _server; }
86 set { _server = value; }
87 }
88
89 /**//// <summary>
90 /// 站点,一般来说第一台主机为1,第二台主机为2,依次类推
91 /// </summary>
92 public int WebSite
93 {
94 get { return Convert.ToInt32(_website); }
95 set { _website = Convert.ToString(value); }
96 }
97
98
99 /**//// <summary>
100 /// 虚拟目录的名字
101 /// </summary>
102 public VirtualDirectories VirDirs
103 {
104 get { return _virdirs; }
105 set { _virdirs = value; }
106 }
107
108
109
110 定义公共方法#region 定义公共方法
111 /**//// <summary>
112 /// 获取匿名访问用户的用户名和密码
113 /// </summary>
114 public void get_AnonymousUser()
115 {
116 _AnonymousUserPass = "IUSR_DEVE-SERVER";
117 _AnonymousUserName = "IUSR_DEVE-SERVER";
118 VirtualDirectory vDir;
119 try
120 {
121 Hashtable myList = (Hashtable)_virdirs;
122 IDictionaryEnumerator myEnumerator = myList.GetEnumerator();
123 while (myEnumerator.MoveNext())
124 {
125 vDir = (VirtualDirectory)myEnumerator.Value;
126 if (vDir.AnonymousUserName != "" && vDir.AnonymousUserPass != "")
127 {
128 _AnonymousUserName = vDir.AnonymousUserName;
129 _AnonymousUserPass = vDir.AnonymousUserPass;
130 break;
131 }
132 }
133 }
134 catch
135 {
136 _AnonymousUserPass = "IUSR_DEVE-SERVER";
137 _AnonymousUserName = "IUSR_DEVE-SERVER";
138 }
139 }
140
141
142 /**//// <summary>
143 /// 连接服务器
144 /// </summary>
145 public void Connect()
146 {
147 ConnectToServer();
148 }
149 /**//// <summary>
150 /// 连接服务器
151 /// </summary>
152 /// <param name="strServer">服务器名称</param>
153 public void Connect(string strServer)
154 {
155 _server = strServer;
156 ConnectToServer();
157 }
158 /**//// <summary>
159 /// 连接服务器
160 /// </summary>
161 /// <param name="strServer">服务器名称</param>
162 /// <param name="strWebSite">站点,一般来说第一台主机为1,第二台主机为2,依次类推</param>
163 public void Connect(string strServer, string strWebSite)
164 {
165 _server = strServer;
166 _website = strWebSite;
167 ConnectToServer();
168 }
169
170
171 /**//// <summary>
172 /// 添加一个站点
173 /// </summary>
174 /// <param name="path">站点的路径</param>
175 public void CreateWebSite(string webSiteName, string port, string path)
176 {
177 try
178 {
179 DirectoryEntry root = new DirectoryEntry("IIS://" + this._server + "/W3SVC");
180 int siteID = 1;
181 foreach (DirectoryEntry e in root.Children)
182 {
183 if (e.SchemaClassName == "IIsWebServer")
184 {
185 int ID = Convert.ToInt32(e.Name);
186 if (ID >= siteID) { siteID = ID + 1; }
187 if (e.Properties["ServerBindings"][0].ToString() == ":" + port + ":")
188 {
189 throw new Exception(port + "已被占用,请选择其它端口!");
190 }
191 }
192 }
193 DirectoryEntry site = (DirectoryEntry)root.Invoke("Create", "IIsWebServer", siteID);
194 site.Invoke("Put", "ServerComment", webSiteName); site.Invoke("Put", "KeyType", "IIsWebServer");
195 site.Invoke("Put", "ServerBindings", ":" + port + ":"); site.Invoke("Put", "ServerState", 2);
196 site.Invoke("Put", "FrontPageWeb", 1); site.Invoke("Put", "DefaultDoc", "index.aspx");
197 site.Invoke("Put", "SecureBindings", ":443:"); site.Invoke("Put", "ServerAutoStart", 1);
198 site.Invoke("Put", "ServerSize", 1); site.Invoke("SetInfo");
199 DirectoryEntry siteVDir = site.Children.Add("Root", "IISWebVirtualDir");
200 siteVDir.Properties["AppIsolated"][0] = 2;
201 siteVDir.Properties["Path"][0] = path;
202 siteVDir.Properties["AccessFlags"][0] = 513;
203 siteVDir.Properties["FrontPageWeb"][0] = 1;
204 siteVDir.Properties["AppRoot"][0] = "LM/W3SVC/" + siteID + "/Root";
205 siteVDir.Properties["AppFriendlyName"][0] = "ROOT";
206 siteVDir.CommitChanges(); site.CommitChanges();
207 }
208 catch (Exception ex)
209 {
210 throw ex;
211 }
212 }
213
214
215 /**//// <summary>
216 /// 取得所有站点
217 /// </summary>
218 /// <returns></returns>
219 public System.Collections.Hashtable getSites()
220 {
221 try
222 {
223 DirectoryEntry root = new DirectoryEntry("IIS://" + this._server + "/W3SVC");
224 Hashtable sites = new Hashtable();
225 foreach (DirectoryEntry e in root.Children)
226 {
227 if (e.SchemaClassName == "IIsWebServer")
228 {
229 sites.Add(e.Name, e);
230 }
231 }
232 return sites;
233 }
234 catch (Exception ex)
235 {
236 throw ex;
237 }
238 }
239
240
241 /**//// <summary>
242 /// 判断是否存这个虚拟目录
243 /// </summary>
244 /// <param name="strVirdir">虚拟目录名称</param>
245 /// <returns></returns>
246 public bool Exists(string strVirdir)
247 {
248 return _virdirs.Contains(strVirdir);
249 }
250 /**//// <summary>
251 /// 添加一个虚拟目录
252 /// </summary>
253 /// <param name="newdir">虚拟目录</param>
254 /// <returns></returns>
255 public bool CreateVirtualDirectory(VirtualDirectory newdir)
256 {
257 string strPath = "IIS://" + _server + "/W3SVC/" + _website + "/ROOT/" + newdir.Name;
258 if (!_virdirs.Contains(newdir.Name) || _batchflag)
259 {
260 try
261 {
262 //加入到ROOT的Children集合中去
263 DirectoryEntry newVirDir = rootfolder.Children.Add(newdir.Name, "IIsWebVirtualDir");
264 newVirDir.Invoke("AppCreate", true);
265 newVirDir.CommitChanges();
266 rootfolder.CommitChanges();
267 //然后更新数据
268 UpdateDirInfo(newVirDir, newdir);
269 return true;
270 }
271 catch (Exception)
272 {
273 return false;
274 }
275 }
276 else
277 {
278 return false;
279 }
280 }
281 /**//// <summary>
282 /// 得到一个虚拟目录
283 /// </summary>
284 /// <param name="strVirdir">虚拟目录名</param>
285 /// <returns></returns>
286 public VirtualDirectory GetVirDir(string strVirdir)
287 {
288 VirtualDirectory tmp = null;
289 if (_virdirs.Contains(strVirdir))
290 {
291 tmp = _virdirs.Find(strVirdir);
292 ((VirtualDirectory)_virdirs[strVirdir]).flag = 2;
293 }
294 else
295 {
296 throw new Exception("虚拟目录" + strVirdir + "不存在!");
297 }
298 return tmp;
299 }
300
301
302 /**//// <summary>
303 /// 更新一个虚拟目录
304 /// </summary>
305 /// <param name="dir">虚拟目录</param>
306 public void Update(VirtualDirectory dir)
307 {
308 //判断需要更改的虚拟目录是否存在
309 if (_virdirs.Contains(dir.Name))
310 {
311 DirectoryEntry ode = rootfolder.Children.Find(dir.Name, "IIsWebVirtualDir");
312 UpdateDirInfo(ode, dir);
313 }
314 else
315 {
316 System.Windows.Forms.MessageBox.Show("虚拟目录" + dir.Name + "不存在!");
317 }
318 }
319 /**//// <summary>
320 /// 删除一个虚拟目录
321 /// </summary>
322 /// <param name="strVirdir">虚拟目录名</param>
323 public void Delete(string strVirdir)
324 {
325 if (_virdirs.Contains(strVirdir))
326 {
327 object[] paras = new object[2];
328 paras[0] = "IIsWebVirtualDir";
329 //表示操作的是虚拟目录
330 paras[1] = strVirdir;
331 rootfolder.Invoke("Delete", paras);
332 rootfolder.CommitChanges();
333 }
334 else
335 {
336 System.Windows.Forms.MessageBox.Show("虚拟目录" + strVirdir + "不存在!");
337 }
338 }
339 /**//// <summary>
340 /// 批量更新
341 /// </summary>
342 public void UpdateBatch()
343 {
344 BatchUpdate(_virdirs);
345 }
346
347
348 /**//// <summary>
349 /// 批量更新
350 /// </summary>
351 /// <param name="vds">虚拟目录集合</param>
352 public void UpdateBatch(VirtualDirectories vds)
353 {
354 BatchUpdate(vds);
355 }
356
357
358 /**//// <summary>
359 /// 获取虚拟目录集合
360 /// </summary>
361 /// <returns></returns>
362 public VirtualDirectories GetVirtualDirdctories()
363 {
364 VirtualDirectories vds = GetVirDirs(this.rootfolder.Children);
365 return vds;
366 }
367 #endregion
368
369 私有方法#region 私有方法
370
371
372 /**//// <summary>
373 /// 关闭当前对象
374 /// </summary>
375 public void Close()
376 {
377 _virdirs.Clear();
378 _virdirs = null;
379 rootfolder.Dispose();
380 }
381 /**//// <summary>
382 /// 连接服务器
383 /// </summary>
384 private void ConnectToServer()
385 {
386 string strPath = "IIS://" + _server + "/W3SVC/" + _website + "/ROOT";
387 try
388 {
389 this.rootfolder = new DirectoryEntry(strPath);
390 _virdirs = GetVirDirs(this.rootfolder.Children);
391 }
392 catch (Exception)
393 {
394 System.Windows.Forms.MessageBox.Show("无法连接到服务器:" + _server);
395 }
396 }
397 /**//// <summary>
398 /// 执行批量更新
399 /// </summary>
400 /// <param name="vds">虚拟目录集合</param>
401 private void BatchUpdate(VirtualDirectories vds)
402 {
403 _batchflag = true;
404 foreach (object item in vds.Values)
405 {
406 VirtualDirectory vd = (VirtualDirectory)item;
407 switch (vd.flag)
408 {
409 case 0:
410 break;
411 case 1:
412 CreateVirtualDirectory(vd);
413 break;
414 case 2:
415 Update(vd);
416 break;
417 }
418 }
419 _batchflag = false;
420 }
421 /**//// <summary>
422 /// 更新指定虚拟目录
423 /// </summary>
424 /// <param name="de"></param>
425 /// <param name="vd">要执行更新的虚拟目录</param>
426 private void UpdateDirInfo(DirectoryEntry de, VirtualDirectory vd)
427 {
428 de.Properties["AnonymousUserName"][0] = vd.AnonymousUserName;
429 de.Properties["AnonymousUserPass"][0] = vd.AnonymousUserPass;
430 de.Properties["AccessRead"][0] = vd.AccessRead;
431 de.Properties["AccessExecute"][0] = vd.AccessExecute;
432 de.Properties["AccessWrite"][0] = vd.AccessWrite;
433 de.Properties["AuthBasic"][0] = vd.AuthBasic;
434 de.Properties["AuthNTLM"][0] = vd.AuthNTLM;
435 de.Properties["ContentIndexed"][0] = vd.ContentIndexed;
436 de.Properties["EnableDefaultDoc"][0] = vd.EnableDefaultDoc;
437 de.Properties["EnableDirBrowsing"][0] = vd.EnableDirBrowsing;
438 de.Properties["AccessSSL"][0] = vd.AccessSSL;
439 de.Properties["AccessScript"][0] = vd.AccessScript;
440 de.Properties["DefaultDoc"][0] = vd.DefaultDoc;
441 de.Properties["Path"][0] = vd.Path;
442 de.CommitChanges();
443 }
444
445
446 /**//// 获取虚拟目录集合
447 /// </summary>
448 /// <param name="des"></param>
449 /// <returns></returns>
450 private VirtualDirectories GetVirDirs(DirectoryEntries des)
451 {
452 VirtualDirectories tmpdirs = new VirtualDirectories();
453 foreach (DirectoryEntry de in des)
454 {
455 if (de.SchemaClassName == "IIsWebVirtualDir")
456 {
457 VirtualDirectory vd = new VirtualDirectory();
458 vd.Name = de.Name;
459 vd.AccessRead = (bool)de.Properties["AccessRead"][0];
460 vd.AccessExecute = (bool)de.Properties["AccessExecute"][0];
461 vd.AccessWrite = (bool)de.Properties["AccessWrite"][0];
462 vd.AnonymousUserName = (string)de.Properties["AnonymousUserName"][0];
463 vd.AnonymousUserPass = (string)de.Properties["AnonymousUserName"][0];
464 vd.AuthBasic = (bool)de.Properties["AuthBasic"][0];
465 vd.AuthNTLM = (bool)de.Properties["AuthNTLM"][0];
466 vd.ContentIndexed = (bool)de.Properties["ContentIndexed"][0];
467 vd.EnableDefaultDoc = (bool)de.Properties["EnableDefaultDoc"][0];
468 vd.EnableDirBrowsing = (bool)de.Properties["EnableDirBrowsing"][0];
469 vd.AccessSSL = (bool)de.Properties["AccessSSL"][0];
470 vd.AccessScript = (bool)de.Properties["AccessScript"][0];
471 vd.Path = (string)de.Properties["Path"][0];
472 vd.flag = 0; vd.DefaultDoc = (string)de.Properties["DefaultDoc"][0];
473 tmpdirs.Add(vd.Name, vd);
474 }
475 }
476 return tmpdirs;
477 }
478 #endregion
479 }
480 /**//// <summary>
481 /// 虚拟目录实体
482 /// </summary>
483 public class VirtualDirectory
484 {
485 private bool _read, _execute, _script, _ssl, _write, _authbasic, _authntlm, _indexed, _endirbrow, _endefaultdoc;
486 private string _ausername, _auserpass, _name, _path;
487 private int _flag;
488 private string _defaultdoc;
489
490 /**//// <summary>
491 /// 构造函数
492 /// </summary>
493 public VirtualDirectory()
494 {
495 SetValue();
496 }
497
498
499 /**//// <summary>
500 /// 构造函数
501 /// </summary>
502 /// <param name="sVirDirName">虚拟目录名</param>
503 public VirtualDirectory(string sVirDirName)
504 {
505 SetValue();
506 _name = sVirDirName;
507 }
508 /**//// <summary>
509 /// 构造函数
510 /// </summary>
511 /// <param name="sVirDirName">虚拟目录名</param>
512 /// <param name="strPhyPath">物理路径</param>
513 /// <param name="AnonymousUser"></param>
514 public VirtualDirectory(string sVirDirName, string strPhyPath, string[] AnonymousUser)
515 {
516 SetValue();
517 _name = sVirDirName;
518 _path = strPhyPath;
519 _ausername = AnonymousUser[0];
520 _auserpass = AnonymousUser[1];
521 }
522
523
524
525 /**//// <summary>
526 /// 设置虚拟目录的属性
527 /// </summary>
528 private void SetValue()
529 {
530 _read = true;
531 _execute = false;
532 _script = true;
533 _ssl = false;
534 _write = false;
535 _authbasic = false;
536 _authntlm = true;
537 _indexed = true;
538 _endirbrow = false;
539 _endefaultdoc = true;
540 _flag = 1;
541 _defaultdoc = "index.aspx";
542 _path = "C:\\";
543 _ausername = "IUSR_DEVE-SERVER";
544 _auserpass = "IUSR_DEVE-SERVER";
545 _name = "";
546 }
547
548
549 public override string ToString()
550 {
551 return this._name;
552 }
553
554 定义属性#region 定义属性
555 public int flag
556 {
557 get { return _flag; }
558 set { _flag = value; }
559 }
560 public bool AccessRead
561 {
562 get { return _read; }
563 set { _read = value; }
564 }
565 public bool AccessWrite
566 {
567 get { return _write; }
568 set { _write = value; }
569 }
570 public bool AccessExecute
571 {
572 get { return _execute; }
573 set { _execute = value; }
574 }
575 public bool AccessSSL
576 {
577 get { return _ssl; }
578 set { _ssl = value; }
579 }
580 public bool AccessScript
581 {
582 get { return _script; }
583 set { _script = value; }
584 }
585 public bool AuthBasic
586 {
587 get { return _authbasic; }
588 set { _authbasic = value; }
589 }
590 public bool AuthNTLM
591 {
592 get { return _authntlm; }
593 set { _authntlm = value; }
594 }
595 public bool ContentIndexed
596 {
597 get { return _indexed; }
598 set { _indexed = value; }
599 }
600 public bool EnableDirBrowsing
601 {
602 get { return _endirbrow; }
603 set { _endirbrow = value; }
604 }
605 public bool EnableDefaultDoc
606 {
607 get { return _endefaultdoc; }
608 set { _endefaultdoc = value; }
609 }
610 public string Name
611 {
612 get { return _name; }
613 set { _name = value; }
614 }
615 public string Path
616 {
617 get { return _path; }
618 set { _path = value; }
619 }
620 public string DefaultDoc
621 {
622 get { return _defaultdoc; }
623 set { _defaultdoc = value; }
624 }
625 public string AnonymousUserName
626 {
627 get { return _ausername; }
628 set { _ausername = value; }
629 }
630 public string AnonymousUserPass
631 {
632 get { return _auserpass; }
633 set { _auserpass = value; }
634 }
635 #endregion
636 }
637
638
639 /**//// <summary>
640 /// 虚拟目录集合类
641 /// </summary>
642 public class VirtualDirectories : System.Collections.Hashtable
643 {
644 public VirtualDirectories() { }
645 /**//// <summary>
646 /// 搜索指定的虚拟目录
647 /// </summary>
648 /// <param name="strName">虚拟目录名</param>
649 /// <returns></returns>
650 public VirtualDirectory Find(string strName)
651 {
652 return (VirtualDirectory)this[strName];
653 }
654 }
655}
656
分享到:
相关推荐
ASP.NET 操作 IIS 工程文件主要涉及的是在 ASP.NET 开发环境中,如何通过代码对 Internet Information Services (IIS) 上的网站、应用程序池、虚拟目录等进行管理和配置。IIS 是微软提供的一个用于托管 Web 应用程序...
ASP.NET是一种由微软开发的服务器端Web应用程序框架,主要用于构建动态网站、Web应用程序和Web服务。IIS(Internet Information Services)是微软提供的一个强大的Web服务器,可以托管各种Web应用程序,包括ASP.NET...
【ASP.NET酒店管理系统详解】 ASP.NET是微软公司推出的一种用于构建Web应用程序的开发框架,它基于.NET Framework,提供了丰富的功能和高效性能。本项目“ASP.NET酒店管理系统”就是利用C#编程语言,结合ASP.NET...
ASP.NET支持多种部署方式,如IIS服务器、Azure云平台等,可以根据企业的实际情况选择。同时,ASP.NET的调试工具和日志记录功能可以帮助开发者快速定位并解决问题。 总的来说,"asp.net人事管理系统"是一个综合运用...
9. **部署与扩展性**:ASP.NET应用可以部署在IIS(Internet Information Services)上,便于管理和扩展。通过负载均衡和分布式存储,可以提高系统的可用性和性能。 10. **错误处理与日志记录**:良好的错误处理和...
ASP.NET文件管理是一个高效且用户友好的在线文件管理系统,它为开发者提供了在Web环境中便捷地处理文件的能力。这个系统基于Microsoft的ASP.NET框架,利用其强大的功能和灵活性,为用户提供了一个安全、稳定且易于...
ASP.NET应用可以通过IIS(Internet Information Services)或其他Web服务器进行部署。系统描述中提到可以运行,意味着这个系统已经包含了所有必要的配置和依赖,可以在合适的环境中正常启动。 总结,这个"asp.net...
ASP.NET提供内置的角色和会员管理,可以通过配置IIS或使用OWIN中间件来实现。 7. **异常处理与日志记录** 为了确保系统的稳定性和可维护性,异常处理和日志记录至关重要。全局异常处理器可以捕获未处理的异常,...
"基于ASP.net企业员工档案管理系统源码.zip"这个标题表明这是一个使用ASP.NET技术开发的企业级员工档案管理系统的源代码压缩包。ASP.NET是微软公司推出的Web应用程序框架,用于构建动态网站、Web应用程序和服务。此...
【ASP.NET题库管理系统详解】 ASP.NET是一种由微软公司开发的服务器端Web应用程序框架,用于构建动态、数据驱动的Web应用程序。在这个系统中,我们利用ASP.NET的强大功能,结合SQL Server 2000数据库,设计并实现了...
完成开发后,ASP.NET应用程序可以通过IIS(Internet Information Services)进行部署。SQL Server 2005的备份和恢复机制则保证了数据的安全。定期更新和监控系统性能,能确保数据库管理系统的持续稳定运行。 总结来...
ASP.NET论坛管理系统是一款基于微软的ASP.NET技术构建的网站应用,用于实现在线社区的讨论与管理功能。这个系统包括了数据库支持,为用户提供了一个互动交流的平台,是初学者了解和学习ASP.NET开发的一个基础框架。 ...
ASP.NET学生管理系统是一款基于C#编程语言开发的Web应用程序,主要功能是对SQL Server数据库中的学生信息进行管理,包括增、删、改、查等基本操作。这个系统充分展示了ASP.NET框架的强大功能和C#语言在Web开发中的...
8. **版本控制与部署**:项目可能使用Git等版本控制系统进行代码管理,同时,了解如何在IIS服务器上部署ASP.NET应用,以及配置应用程序池和网站设置,也是实际操作中必须掌握的技能。 通过研究MF000912-ASP.NET仓库...
ASP.NET图书馆管理信息系统是一款基于微软的ASP.NET技术开发的用于图书借阅与管理的应用系统。ASP.NET是.NET框架的一部分,它提供了一种高效、安全、可伸缩的平台,用于构建动态网站、Web应用程序和Web服务。这个...
ASP.NET三层图书管理系统是一个基于C#编程语言和ASP.NET框架构建的应用程序,旨在提供一个简单易用的图书管理解决方案。这个系统通常包含三个主要层次:数据访问层、业务逻辑层和用户界面层,以实现良好的代码组织和...
ASP.NET图书管理系统论文是一个关于如何使用ASP.NET技术构建图书管理系统的毕业设计项目。这个系统的主要目标是实现对图书的高效管理和便捷查询,为图书馆或个人图书收藏提供数字化解决方案。在这个项目中,开发者...
【ASP.NET 物资管理系统源码详解】 ASP.NET 是一种由微软公司开发的服务器端Web应用程序框架,用于构建动态网站、Web应用和Web服务。在这个"asp.net物资管理系统源码"中,我们可以深入理解如何利用ASP.NET技术来...
- 文件上传:ASP.NET 2.0支持大文件上传,通过HttpPostedFile类进行处理。 总的来说,Windows Server 2003结合IIS和.NET Framework 2.0,为开发和部署ASP.NET应用程序提供了稳定且功能强大的平台。正确安装和配置...