<strike id="5ntnv"><i id="5ntnv"><del id="5ntnv"></del></i></strike>
<strike id="5ntnv"></strike><ruby id="5ntnv"></ruby><del id="5ntnv"><dl id="5ntnv"><del id="5ntnv"></del></dl></del><strike id="5ntnv"><dl id="5ntnv"><del id="5ntnv"></del></dl></strike>
<strike id="5ntnv"></strike>
<strike id="5ntnv"></strike>
<span id="5ntnv"><dl id="5ntnv"></dl></span>
<strike id="5ntnv"><i id="5ntnv"><del id="5ntnv"></del></i></strike><th id="5ntnv"><noframes id="5ntnv"><span id="5ntnv"><dl id="5ntnv"><del id="5ntnv"></del></dl></span>
<span id="5ntnv"></span>
<strike id="5ntnv"><dl id="5ntnv"><del id="5ntnv"></del></dl></strike>
<strike id="5ntnv"><dl id="5ntnv"><del id="5ntnv"></del></dl></strike><strike id="5ntnv"><i id="5ntnv"></i></strike><span id="5ntnv"></span>
<strike id="5ntnv"></strike>
<strike id="5ntnv"></strike>
<th id="5ntnv"><noframes id="5ntnv">
<ruby id="5ntnv"></ruby>
<strike id="5ntnv"><dl id="5ntnv"></dl></strike>

貴州網站建設公司貴州網站建設公司

WebDev.WebServer40.exe改造,自己制作輕量級asp.net網站IIS服務

WebDev.WebServer40.exe改造,改造自己制作輕量級asp.net網站IIS服務

閱讀次數:191 次  來源:admin  發布時間:

大學玩asp.net時就發現VS在Debug時會起一個web服務,自己制作站這東西也太神奇了服務起得這么快,輕量而相對于IIS又這么渺小。服務

前幾個月在用phonegap+jqmobi(被inter收購后叫App Framework)做手機應用開發。改造用dreamweaver CS6的自己制作站云編譯確實挺方便的,但是輕量寫代碼的話還是比較喜歡VS的代碼聯想。本地調試時,服務點擊WebDev.WebServer40.exe改造,改造自己制作輕量級asp.net網站IIS服務又啟動了這個web服務。輕量

再后來要開發一個在WPF嵌入網頁的服務控件,果斷用WebBrowser控件簡單地封裝了一下,改造這樣發現當只是自己制作站打開本地的html頁面時就會彈出安全阻止信息,需要手動點一下允許,度娘的輕量各種改IE設置就是沒用,最后發現通過訪問web服務返回的頁面就不會彈出該提示了。第一反映就是用VS自帶的這個來實現,但是托盤會彈氣泡等,所以不得不改造下了。

WebDev.WebServer40.exe改造,自己制作輕量級asp.net網站IIS服務

用360查看該端口定位文件

WebDev.WebServer40.exe改造,自己制作輕量級asp.net網站IIS服務

WebDev.WebServer40.exe改造,自己制作輕量級asp.net網站IIS服務

151KB,還綠色版,這也太牛了。但是但我用局域網地址進行訪問時就發現不可訪問,這是為什么呢?有點太可惜了所以就上網找了這個exe的相關資料,有人已經修改了可以局域網訪問了,但是他改的東西下載下來報錯,于是就決定自己動手進行修改。

仔細閱讀之前各位大神寫的文章后,綜合優化了一下,終于出現了,真正綠色版(.NET 4.0),win8下完美運行:

WebDev.WebServer40.exe改造,自己制作輕量級asp.net網站IIS服務

WebDev.WebServer40.exe改造,自己制作輕量級asp.net網站IIS服務

純正綠色版,無任何微軟信息

WebDev.WebServer40.exe改造,自己制作輕量級asp.net網站IIS服務

1.修改過程

把WebDev.WebServer40.EXE拖到ILSpy.exe里進行反編譯成項目(本人比較支持免費軟件)

WebDev.WebServer40.exe改造,自己制作輕量級asp.net網站IIS服務

同樣也反編譯應用的WebDev.WebHost40成項目

把server里對host的引用刪了,重新引用剛反編譯的項目。

修改Microsoft.VisualStudio.WebHost.Server里的方法Start(),修改的代碼如下:

if (Socket.OSSupportsIPv6)            {                 try                {                     this._socketIpv6 = this.CreateSocketBindAndListen(AddressFamily.InterNetworkV6, IPAddress.IPv6Any, this._port);                }                catch (SocketException ex)                {                     if (ex.SocketErrorCode == SocketError.AddressAlreadyInUse || !flag)                    {                         throw;                    }                }            }            if (flag)            {                 try                {                     this._socketIpv4 = this.CreateSocketBindAndListen(AddressFamily.InterNetwork, IPAddress.Any, this._port);                }                catch (SocketException)                {                     if (this._socketIpv6 == null)                    {                         throw;                    }                }            }

Microsoft.VisualStudio.WebHost.Request的TryParseRequest()方法一個判斷注釋掉

private bool TryParseRequest()        {             this.Reset();            this.ReadAllHeaders();            //if (!this._connection.IsLocal)            //{             //    this._connection.WriteErrorAndClose(403);            //    return false;            //}            if (this._headerBytes == null || this._endHeadersOffset < 0 || this._headerByteStrings == null || this._headerByteStrings.Count == 0)            {                 this._connection.WriteErrorAndClose(400);                return false;            }

這時候F6編譯一下發現 Microsoft.VisualStudio.WebHost.NtlmAuth下的Authenticate()方法報一大堆Fixed關鍵字錯誤,做如下修改騙過編譯器

fixed (SecHandle* lptr = (&this._securityContext))            {                 IntPtr* ptr = (IntPtr*)lptr;                fixed (SecBuffer* lptr2 = (&this._inputBuffer))                {                     IntPtr* ptr2 = (IntPtr*)lptr2;                    fixed (SecBuffer* lptr3 = (&this._outputBuffer))                    {                         IntPtr* ptr3 = (IntPtr*)lptr3;                        fixed (byte* lptr4 = (&array[0]))                        {                             IntPtr* ptr4 = (IntPtr*)lptr4;                            fixed (byte* lptr5 = (&array2[0]))                            {                                 IntPtr* ptr5 = (IntPtr*)lptr5;                                IntPtr phContext = IntPtr.Zero;                                if (this._securityContextAcquired)                                {                                     phContext = (IntPtr)((void*)ptr);                                }

在Microsoft.VisualStudio.WebHost.Connection的GetHost()方法里加入如下代碼(要把WebDev.WebHost40.dll復制到站點目錄的bin目錄下):

lock (this._lockObject)                {                     host = this._host;                    if (host == null)                    {                         //復制當前dll到站點目錄                        Assembly myAss = Assembly.GetExecutingAssembly();                        string assUrl = myAss.Location;                        if (!File.Exists(this._physicalPath + "\\bin\\" + myAss.FullName.Split(',')[0] + ".dll"))                        {                             if (!Directory.Exists(this._physicalPath + "\\bin"))                            {                                 Directory.CreateDirectory(this._physicalPath + "\\bin");                            }                            File.Copy(assUrl, this._physicalPath + "bin\\" + myAss.FullName.Split(',')[0]+".dll");                        }                                               string text = (this._virtualPath + this._physicalPath).ToLowerInvariant();                        string appId = text.GetHashCode().ToString("x", CultureInfo.InvariantCulture);                        this._host = (Host)this._appManager.CreateObject(appId, typeof(Host), this._virtualPath, this._physicalPath, false);                        this._host.Configure(this, this._port, this._virtualPath, this._physicalPath, this._requireAuthentication, this._disableDirectoryListing);                        host = this._host;                    }                }

最后一步,為WebDev.WebHost40.dll添加簽名,不然運行時還是會去加載自帶的WebDev.WebHost40.dll。

WebDev.WebServer40.exe改造,自己制作輕量級asp.net網站IIS服務

編譯一下,這樣運行WebDev.WebServer40.EXE加載本地路徑就可以局域網訪問了。

為了簡單易用,我用WPF做了窗口來方便WebServer40.EXE啟動參數的傳遞,在傳遞參數時多加入一個“/silent:true”參數就可以靜默運行了。具體怎么啟動怎么傳參具體我就不說了,參看Process這個類。

運行如下:

WebDev.WebServer40.exe改造,自己制作輕量級asp.net網站IIS服務

WebDev.WebServer40.exe改造,自己制作輕量級asp.net網站IIS服務

下載地址:http://files.cnblogs.com/tong-tong/TTWebServer.zi

參考文獻: http://www.cnblogs.com/huigll/archive/2011/02/25/1851112.html

后記

近來在各種房貸、老婆貸的壓力下接了各種私活,各種加班,各種被坑,不過數錢時還是比較爽的~~~當今物價都在上漲,唯獨工資不漲,那錢都去了哪里了呢???

出處:https://www.cnblogs.com/tong-tong/archive/2013/05/02/3049428.html

=======================================================================================

自己在網上找了一個修改好了的,可以直接開箱使用。

下載地址:webserver4.0.zi

大學玩asp.net時就發現VS在Debug時會起一個web服務,這東西也太神奇了服務起得這么快,而相對于IIS又這么渺小。

前幾個月在用phonegap+jqmobi(被inter收購后叫App Framework)做手機應用開發。用dreamweaver CS6的云編譯確實挺方便的,但是寫代碼的話還是比較喜歡VS的代碼聯想。本地調試時,點擊WebDev.WebServer40.exe改造,自己制作輕量級asp.net網站IIS服務又啟動了這個web服務。

再后來要開發一個在WPF嵌入網頁的控件,果斷用WebBrowser控件簡單地封裝了一下,這樣發現當只是打開本地的html頁面時就會彈出安全阻止信息,需要手動點一下允許,度娘的各種改IE設置就是沒用,最后發現通過訪問web服務返回的頁面就不會彈出該提示了。第一反映就是用VS自帶的這個來實現,但是托盤會彈氣泡等,所以不得不改造下了。

WebDev.WebServer40.exe改造,自己制作輕量級asp.net網站IIS服務

用360查看該端口定位文件

WebDev.WebServer40.exe改造,自己制作輕量級asp.net網站IIS服務

WebDev.WebServer40.exe改造,自己制作輕量級asp.net網站IIS服務

151KB,還綠色版,這也太牛了。但是但我用局域網地址進行訪問時就發現不可訪問,這是為什么呢?有點太可惜了所以就上網找了這個exe的相關資料,有人已經修改了可以局域網訪問了,但是他改的東西下載下來報錯,于是就決定自己動手進行修改。

仔細閱讀之前各位大神寫的文章后,綜合優化了一下,終于出現了,真正綠色版(.NET 4.0),win8下完美運行:

WebDev.WebServer40.exe改造,自己制作輕量級asp.net網站IIS服務

WebDev.WebServer40.exe改造,自己制作輕量級asp.net網站IIS服務

純正綠色版,無任何微軟信息

WebDev.WebServer40.exe改造,自己制作輕量級asp.net網站IIS服務

1.修改過程

把WebDev.WebServer40.EXE拖到ILSpy.exe里進行反編譯成項目(本人比較支持免費軟件)

WebDev.WebServer40.exe改造,自己制作輕量級asp.net網站IIS服務

同樣也反編譯應用的WebDev.WebHost40成項目

把server里對host的引用刪了,重新引用剛反編譯的項目。

修改Microsoft.VisualStudio.WebHost.Server里的方法Start(),修改的代碼如下:

if (Socket.OSSupportsIPv6)            {                 try                {                     this._socketIpv6 = this.CreateSocketBindAndListen(AddressFamily.InterNetworkV6, IPAddress.IPv6Any, this._port);                }                catch (SocketException ex)                {                     if (ex.SocketErrorCode == SocketError.AddressAlreadyInUse || !flag)                    {                         throw;                    }                }            }            if (flag)            {                 try                {                     this._socketIpv4 = this.CreateSocketBindAndListen(AddressFamily.InterNetwork, IPAddress.Any, this._port);                }                catch (SocketException)                {                     if (this._socketIpv6 == null)                    {                         throw;                    }                }            }

Microsoft.VisualStudio.WebHost.Request的TryParseRequest()方法一個判斷注釋掉

private bool TryParseRequest()        {             this.Reset();            this.ReadAllHeaders();            //if (!this._connection.IsLocal)            //{             //    this._connection.WriteErrorAndClose(403);            //    return false;            //}            if (this._headerBytes == null || this._endHeadersOffset < 0 || this._headerByteStrings == null || this._headerByteStrings.Count == 0)            {                 this._connection.WriteErrorAndClose(400);                return false;            }

這時候F6編譯一下發現 Microsoft.VisualStudio.WebHost.NtlmAuth下的Authenticate()方法報一大堆Fixed關鍵字錯誤,做如下修改騙過編譯器

fixed (SecHandle* lptr = (&this._securityContext))            {                 IntPtr* ptr = (IntPtr*)lptr;                fixed (SecBuffer* lptr2 = (&this._inputBuffer))                {                     IntPtr* ptr2 = (IntPtr*)lptr2;                    fixed (SecBuffer* lptr3 = (&this._outputBuffer))                    {                         IntPtr* ptr3 = (IntPtr*)lptr3;                        fixed (byte* lptr4 = (&array[0]))                        {                             IntPtr* ptr4 = (IntPtr*)lptr4;                            fixed (byte* lptr5 = (&array2[0]))                            {                                 IntPtr* ptr5 = (IntPtr*)lptr5;                                IntPtr phContext = IntPtr.Zero;                                if (this._securityContextAcquired)                                {                                     phContext = (IntPtr)((void*)ptr);                                }

在Microsoft.VisualStudio.WebHost.Connection的GetHost()方法里加入如下代碼(要把WebDev.WebHost40.dll復制到站點目錄的bin目錄下):

lock (this._lockObject)                {                     host = this._host;                    if (host == null)                    {                         //復制當前dll到站點目錄                        Assembly myAss = Assembly.GetExecutingAssembly();                        string assUrl = myAss.Location;                        if (!File.Exists(this._physicalPath + "\\bin\\" + myAss.FullName.Split(',')[0] + ".dll"))                        {                             if (!Directory.Exists(this._physicalPath + "\\bin"))                            {                                 Directory.CreateDirectory(this._physicalPath + "\\bin");                            }                            File.Copy(assUrl, this._physicalPath + "bin\\" + myAss.FullName.Split(',')[0]+".dll");                        }                                               string text = (this._virtualPath + this._physicalPath).ToLowerInvariant();                        string appId = text.GetHashCode().ToString("x", CultureInfo.InvariantCulture);                        this._host = (Host)this._appManager.CreateObject(appId, typeof(Host), this._virtualPath, this._physicalPath, false);                        this._host.Configure(this, this._port, this._virtualPath, this._physicalPath, this._requireAuthentication, this._disableDirectoryListing);                        host = this._host;                    }                }

最后一步,為WebDev.WebHost40.dll添加簽名,不然運行時還是會去加載自帶的WebDev.WebHost40.dll。

WebDev.WebServer40.exe改造,自己制作輕量級asp.net網站IIS服務

編譯一下,這樣運行WebDev.WebServer40.EXE加載本地路徑就可以局域網訪問了。

為了簡單易用,我用WPF做了窗口來方便WebServer40.EXE啟動參數的傳遞,在傳遞參數時多加入一個“/silent:true”參數就可以靜默運行了。具體怎么啟動怎么傳參具體我就不說了,參看Process這個類。

運行如下:

WebDev.WebServer40.exe改造,自己制作輕量級asp.net網站IIS服務

WebDev.WebServer40.exe改造,自己制作輕量級asp.net網站IIS服務

下載地址:http://files.cnblogs.com/tong-tong/TTWebServer.zi

參考文獻: http://www.cnblogs.com/huigll/archive/2011/02/25/1851112.html

后記

近來在各種房貸、老婆貸的壓力下接了各種私活,各種加班,各種被坑,不過數錢時還是比較爽的~~~當今物價都在上漲,唯獨工資不漲,那錢都去了哪里了呢???

贊(1)
未經允許不得轉載:>貴州網站建設公司 » WebDev.WebServer40.exe改造,自己制作輕量級asp.net網站IIS服務
国产欧美精品