日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

WebDev.WebServer 学习

發布時間:2025/4/16 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 WebDev.WebServer 学习 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

? ? ?自從Vs2005起,Vs開發環境便自帶了WebDev.WebServer,就是這個圖標,它實際上是一個小型的Web服務器,專用于.net平臺。大家經常調試程序它還是相當的方便,經過小小的配置就可以指向某個文件夾,使該文件夾成為網站目錄已供訪問。
??? WebDev.WebServer確實很輕便,同時它本身是.net程序,才2個文件,作為測試和演示環境是非常的好用,在xp也能很好的運行,Xp的IIS5實在是不方便用。
??? 但是自帶的WebDev.WebServer只能用于本機,那是因為MS對其進行了限制,因為作出它的目的,本身是為了Vs的開發更方便而已,但是很多測試也是基于網絡的,至少你不希望別人測試一些網站,總得來用你的電腦吧。
??? WebDev.WebServer一共是兩個文件,一個是WebDev.WebServer.exe,另一個是WebDev.WebHost.dll,另外說一下WebDev.WebServer是安裝開發環境才有的,不是安裝.net framework里面的東東,所以你提取這兩個文件都需要已經安裝有開發環境下來進行。

?新建一個項目 StartExamples

在Program類中加入以下代碼:

?internal?static?class?Program
????{
????????[STAThread]
????????
private?static?void?Main(string[]?args)
????????{
????????????
string?currentDirectory?=?Environment.CurrentDirectory;
????????????
string?appName?=?"";
????????????ProcessParameters(args,?
ref?currentDirectory,?ref?appName);

????????????
string?devServerExecutable?=?GetDevServerExecutable(CheckQsf40(currentDirectory));
????????????
string?portNumber?=?GetPortNumber();

????????????
if?(!File.Exists(devServerExecutable)){
????????????????Console.WriteLine(
"Cannot?find?the?ASP.NET?Development?Server!");
????????????}
else{
????????????????StartProcess(devServerExecutable,?portNumber,?currentDirectory,?appName);
????????????}
????????}
????????
private?static?void?ProcessParameters(string[]?args,?ref?string?physPath,?ref?string?appName)
????????{
????????????
foreach?(string?str?in?args)
????????????{
????????????????
if?(str.StartsWith("-path:",?StringComparison.OrdinalIgnoreCase))
????????????????{
????????????????????physPath?
=?str.Remove(0,?6);
????????????????}
????????????????
else?if?(str.StartsWith("-appname:",?StringComparison.OrdinalIgnoreCase))
????????????????{
????????????????????appName?
=?str.Remove(0,?9);
????????????????}
????????????????
else?if?(str.StartsWith("-help",?StringComparison.OrdinalIgnoreCase)?||?str.StartsWith("-?",?StringComparison.OrdinalIgnoreCase))
????????????????{
????????????????????ShowHelp();
????????????????}
????????????}
????????}
????????
private?static?void?ShowHelp()
????????{
????????????MessageBox.Show(
"Usage:?{0}?[-path:<path?to?root?of?web>]?[-appname:/<name?of?web?application>]",?
????????????????Application.ExecutablePath.Substring(Application.ExecutablePath.LastIndexOf(
@"\")?+?1));
????????}
????????
private?static?string?GetDevServerExecutable(bool?check40)
????????{
????????????
string?str?=?string.Empty;
????????????
string?path?=?string.Empty;
????????????
if?(check40)
????????????{
????????????????path?
=?string.Format(@"{0}\Microsoft?Shared\DevServer\10.0\WebDev.WebServer40.exe",?Environment.GetEnvironmentVariable("CommonProgramFiles"));
????????????????
if?(File.Exists(path)){
????????????????????str?
=?path;
????????????????}
else{
????????????????????path?
=?string.Format(@"{0}\Microsoft?Shared\DevServer\10.0\WebDev.WebServer40.exe",?Environment.GetEnvironmentVariable("CommonProgramFiles(x86)"));
????????????????????
if?(File.Exists(path)){
????????????????????????str?
=?path;
????????????????????}
????????????????}
????????????}
????????????
if?(str.Length?==?0){
????????????????path?
=?string.Format(@"{0}\Microsoft?Shared\DevServer\10.0\WebDev.WebServer20.exe",?Environment.GetEnvironmentVariable("CommonProgramFiles"));
????????????????
if?(File.Exists(path)){
????????????????????str?
=?path;
????????????????}
else{
????????????????????path?
=?string.Format(@"{0}\Microsoft?Shared\DevServer\10.0\WebDev.WebServer20.exe",?Environment.GetEnvironmentVariable("CommonProgramFiles(x86)"));
????????????????????
if?(File.Exists(path)){
????????????????????????str?
=?path;
????????????????????}
????????????????}
????????????}
????????????
if?(str.Length?==?0){
????????????????path?
=?string.Format(@"{0}\Microsoft?Shared\DevServer\9.0\WebDev.WebServer.exe",?Environment.GetEnvironmentVariable("CommonProgramFiles"));
????????????????
if?(File.Exists(path)){
????????????????????str?
=?path;
????????????????}
else{
????????????????????path?
=?string.Format(@"{0}\Microsoft?Shared\DevServer\9.0\WebDev.WebServer.exe",?Environment.GetEnvironmentVariable("CommonProgramFiles(x86)"));
????????????????????
if?(File.Exists(path)){
????????????????????????str?
=?path;
????????????????????}
????????????????}
????????????}
????????????
if?(str.Length?!=?0){
????????????????
return?str;
????????????}
????????????
string?str3?=?"50727";
????????????RegistryKey?key?
=?Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\.NETFramework\policy\v2.0");
????????????
if?((key?!=?null)?&&?(key.ValueCount?>?0)){
????????????????str3?
=?key.GetValueNames()[0];
????????????}
else{
????????????????MessageBox.Show(
"Error?while?reading?.NET?Framework?2.0?configuration!?Assuming?default?values.");
????????????}
????????????
return?string.Format(@"{0}\Microsoft.NET\Framework\v2.0.{1}\WebDev.WebServer.exe",?Environment.GetEnvironmentVariable("WINDIR"),?str3);
????????}
????????
private?static?bool?CheckQsf40(string?physPath)
????????{
????????????
string?path?=?physPath?+?@"\Web.Config";
????????????
if?(File.Exists(path)){
????????????????StreamReader?reader?
=?new?StreamReader(path);
????????????????
string?str2?=?reader.ReadToEnd();
????????????????reader.Close();
????????????????
return?(str2.IndexOf("System.Data.Linq,?Version=4.0.0.0")?!=?-1);
????????????}
????????????
return?false;
????????}
????????
private?static?string?GetPortNumber()
????????{
????????????
bool?flag?=?false;
????????????TcpListener?listener?
=?null;
????????????
int?port?=?0;
????????????
try
????????????{
????????????????listener?
=?new?TcpListener(IPAddress.Any,?0x206d);
????????????????listener.ExclusiveAddressUse?
=?true;
????????????????listener.Start();
????????????????port?
=?((IPEndPoint)listener.LocalEndpoint).Port;
????????????????listener.Stop();
????????????}
????????????
catch?(SocketException)
????????????{
????????????????flag?
=?true;
????????????}
????????????
if?(flag)
????????????{
????????????????
try
????????????????{
????????????????????listener?
=?new?TcpListener(IPAddress.Any,?0);
????????????????????listener.Start();
????????????????????port?
=?((IPEndPoint)listener.LocalEndpoint).Port;
????????????????????listener.Stop();
????????????????}
????????????????
catch?(Exception)
????????????????{
????????????????}
????????????}
????????????
if?(port?==?0)
????????????{
????????????????port?
=?0x206d;
????????????}
????????????
return?port.ToString();
????????}
????????
private?static?void?StartProcess(string?cassiniExecutable,?string?portNumber,?string?physPath,?string?appName)
????????{
????????????Process?process?
=?new?Process();
????????????process.StartInfo.FileName?
=?cassiniExecutable;
????????????process.StartInfo.WindowStyle?
=?ProcessWindowStyle.Hidden;
????????????process.StartInfo.Arguments?
=?string.Format("/port:{0}?/path:\"{1}\"?/vpath:\"{2}\"",?portNumber,?physPath,?appName);
????????????process.Start();
????????????
new?WaitMessageForm().ShowDialog();
????????????Process?process2?
=?new?Process();
????????????process2.StartInfo.UseShellExecute?
=?true;
????????????process2.StartInfo.FileName?
=?string.Format("http://localhost:{0}{1}",?portNumber,?appName);
????????????process2.Start();
????????}
????}

在StartExamples項目中加入?WaitMessageForm 窗體加入以下代碼

public?class?WaitMessageForm?:?Form
{
????
private?IContainer?components;
????
private?Label?label1;

????
public?WaitMessageForm()
????{
????????
this.InitializeComponent();
????}
????
private?void?InitializeComponent()
????{
????????ComponentResourceManager?manager?
=?new?ComponentResourceManager(typeof(WaitMessageForm));
????????
this.label1?=?new?System.Windows.Forms.Label();
????????
this.SuspendLayout();
????????
//?
????????
//?label1
????????
//?
????????this.label1.AutoSize?=?true;
????????
this.label1.Font?=?new?System.Drawing.Font("Microsoft?Sans?Serif",?12F,?System.Drawing.FontStyle.Bold,?System.Drawing.GraphicsUnit.Point,?((byte)(0)));
????????
this.label1.Location?=?new?System.Drawing.Point(26,?26);
????????
this.label1.Name?=?"label1";
????????
this.label1.Size?=?new?System.Drawing.Size(517,?20);
????????
this.label1.TabIndex?=?0;
????????
this.label1.Text?=?"Please?wait?while?the?ASP.NET?Development?Server?is?started...";
????????
this.label1.UseWaitCursor?=?true;
????????
//?
????????
//?WaitMessageForm
????????
//?
????????this.AccessibleDescription?=?"ASP.NET?Development?server?loader";
????????
this.AccessibleName?=?"Start?Examples";
????????
this.AutoScaleMode?=?System.Windows.Forms.AutoScaleMode.Inherit;
????????
this.AutoScaleDimensions?=?new?SizeF(6f,?13f);
????????
this.AutoScaleMode?=?AutoScaleMode.Font;


????????
this.CausesValidation?=?false;
????????
this.ClientSize?=?new?System.Drawing.Size(575,?70);
????????
this.ControlBox?=?false;
????????
this.Controls.Add(this.label1);
????????
this.FormBorderStyle?=?FormBorderStyle.None;
????????
this.Name?=?"WaitMessageForm";
????????
this.StartPosition?=?System.Windows.Forms.FormStartPosition.CenterScreen;
????????
this.Text?=?"Loading...";
????????
this.UseWaitCursor?=?true;
????????
this.ResumeLayout(false);
????????
this.PerformLayout();

????}
????
protected?override?void?OnLoad(EventArgs?e)
????{
????????
base.OnLoad(e);
????????Timer?timer?
=?new?Timer();
????????timer.Interval?
=?0xfa0;
????????timer.Tick?
+=?new?EventHandler(this.closeTimer_Tick);
????????timer.Start();
????}
????
private?void?closeTimer_Tick(object?sender,?EventArgs?e)
????{
????????((Timer)sender).Stop();
????????((Timer)sender).Dispose();
????????
base.Close();
????}
????
protected?override?void?Dispose(bool?disposing)
????{
????????
if?(disposing?&&?(this.components?!=?null))
????????{
????????????
this.components.Dispose();
????????}
????????
base.Dispose(disposing);
????}
????

}?

?運行效果

?

?

快速啟動WebDev.WebServer的方法

直接通過文件夾的快捷菜單來啟動WebDev.WebServer。

?

簡單來說就是建立一個注冊表文件,寫入下列內容:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINESOFTWAREClassesFoldershellVS2005 WebServer]
@="啟動Web服務器"

[HKEY_LOCAL_MACHINESOFTWAREClassesFoldershellVS2005 WebServercommand]
@="C:\Windows\Microsoft.NET\Framework\v2.0.50727\Webdev.WebServer.exe /port:8080 /path:"%1""

  注意這里是依照安裝了VS2005的情況,如果是VS2008的話,Webdev.WebServer.exe的目錄變了,應當做如下改寫:

[HKEY_LOCAL_MACHINESOFTWAREClassesFoldershellVS2008 WebServer]
@="啟動Web服務器"

[HKEY_LOCAL_MACHINESOFTWAREClassesFoldershellVS2008 WebServercommand]
@="C:\Program Files\Common Files\Microsoft Shared\DevServer\9.0\Webdev.WebServer.exe /port:8080 /path:"%1""

  如果安裝VS的時候沒有選擇默認的安裝目錄,請自行修改以上內容。

  建立這個注冊表文件以后,只要雙擊寫入到注冊表就可以了,想要啟動,只要在文件夾上單擊右鍵就OK了。

  這個時候可以看到Webdev.WebServer已經啟動,打開瀏覽器就可以訪問了。

??

?

見可以寫一個bat文件,內容為:
set path=%path%;C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727
WebDev.WebServer.EXE /path:”C:\Inetpub\wwwroot”
這樣每次啟動就比較方便了。

?

?

?

轉載于:https://www.cnblogs.com/luomingui/archive/2011/07/12/2104477.html

總結

以上是生活随笔為你收集整理的WebDev.WebServer 学习的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。