問題
最近在 Web 使用 Aspose.Pdf 來產生文件時,有時候會忽然出現 System.NullReferenceException 的錯誤。
而錯誤的地方居然是在 License.SetLicense 的 Method,如下,
System.NullReferenceException: 並未將物件參考設定為物件的執行個體。
於 .(Stream )
於 .(String , Assembly )
於 Aspose.Pdf.License.SetLicense(String licenseName)
解法
直覺來看應該是 License 檔案壞了,所以請同事更新 License 檔,再執行就好了。
可是過沒多久,又發生一樣的問題。
我們操作 Aspose 元件的方式是,一開始先設定 License ,再建立要使用的元件,如下,
1 | var lic = new License(); |
在網路上似乎也有人談到這種問題。或許在 Web 環境中,又有多執行緒下所造成的。
所以在 Page_Load 中寫了以下的程式來測試,果然馬上出現 NullReferenceException 的錯誤,如下,
1 | Parallel.For(0, 10, delegate (int i) |
這個問題原廠已記錄在未來應該會修正這個問題。
而目前的話,如果設定 License 的話,就在 global.asax 中的 Application_Start Event 設定即可。
在其他地方就不需要再設定 License ,以免出現 NullReferenceException 。
1 | protected void Application_Start(object sender, EventArgs e) |