iT邦幫忙

2

如何對Asp.net MVC 插入中斷件 查看運作時狀態?

在開發Asp.net MVC 難免會遇到問題需要了解mvc運作原理
你想學習MVC底層是如何運作的

幸好微軟有將ASP.Net MVC開源。

但....直接看原始碼實在是不好搞懂,怎麼辦呢?
如果可以使用偵錯模式來查看程式碼 一定可更容易了解裡面的來龍去脈
所以小弟就跟大家分享 在網上找到如何在ASP.Net MVC原始碼上偵錯

在專案上偵錯MVC按照下面五個步驟即可完成

一、下載MVC原始碼
MVC原始碼網址

二、打開自己的專案

  1. 點選方案->加入->加入現有專案
    https://ithelp.ithome.com.tw/upload/images/20171017/20096630lrPkL2lqVN.png
  2. 並將下面幾個專案加入方案中
    System.Web.Mvc
    System.Web.Razor
    System.Web.WebPages.Deployment
    System.Web.WebPages
    System.Web.WebPages.Razor
    https://ithelp.ithome.com.tw/upload/images/20171017/20096630nThABqz3fy.png

三.改變目前方案的DLL引用

  1. 刪除原本預設引用
    https://ithelp.ithome.com.tw/upload/images/20171017/20096630EuMIvympQt.png
  2. 新增目前專案 參考->加入參考->專案(方案)
    將目前的專案加入引用
    https://ithelp.ithome.com.tw/upload/images/20171017/20096630CKX2nIFZHj.png

四.移除簽署

  1. 將asp.net mvc那5個專案移除[加密簽署]
    https://ithelp.ithome.com.tw/upload/images/20171017/20096630gJ8ezADKwq.png

五.移除Assembly.publicKey

  1. 移除 AssemblyInfo上PublicKey
    https://ithelp.ithome.com.tw/upload/images/20171017/200966308CxIWqgziT.png
    如下面程式: 將PublickKey移除即可
移除前:
[assembly: InternalsVisibleTo("System.Web.Mvc, PublicKey=0024000004800000940000000602000000240000525341310004000001000100b5fc90e7027f67871e773a8fde8938c81dd402ba65b9201d60593e96c492651e889cc13f1415ebb53fac1131ae0bd333c5ee6021672d9718ea31a8aebd0da0072f25d87dba6fc90ffd598ed4da35e44c398c454307e8e33b8426143daec9f596836f97c8f74750e5975c64e2189f45def46b2a2b1247adc3652bf5c308055da9")] 
[assembly: InternalsVisibleTo("System.Web.Helpers, PublicKey=0024000004800000940000000602000000240000525341310004000001000100b5fc90e7027f67871e773a8fde8938c81dd402ba65b9201d60593e96c492651e889cc13f1415ebb53fac1131ae0bd333c5ee6021672d9718ea31a8aebd0da0072f25d87dba6fc90ffd598ed4da35e44c398c454307e8e33b8426143daec9f596836f97c8f74750e5975c64e2189f45def46b2a2b1247adc3652bf5c308055da9")]

移除後:
[assembly: InternalsVisibleTo("System.Web.Mvc")] 
[assembly: InternalsVisibleTo("System.Web.Helpers")]
  1. 移除 webcoig上PublicKey
移除前:
<sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
 <section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
 <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
</sectionGroup>

移除後:
<sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor">
<section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor" requirePermission="false" />
<section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor" requirePermission="false" />
</sectionGroup> 

重點是在第五點 一定要照做不然會無法編譯

如上述都執行完了 就可以開心來偵錯MVC搂^^

小弟已將可偵錯MVC的專案放在github上 連結

參考資料: https://blogs.msdn.microsoft.com/micl/2014/06/06/how-to-debug-your-application-with-mvc-fresh-source-code/


1 則留言

0
小魚
iT邦新手 2 級 ‧ 2017-10-17 22:48:10

感謝分享

我要留言

立即登入留言