顯示具有 VS 標籤的文章。 顯示所有文章
顯示具有 VS 標籤的文章。 顯示所有文章

2025年5月27日 星期二

pdf.js 無法顯示部份字

有個檔案在pdf viewer套件中無法顯示內容,但下載檔案後使用工具又可以正常顯示。

本來以為是套件版本太舊的原因,於是去下載pdf viewer套件 https://github.com/mozilla/pdf.js

更新後還是一樣。

覺得應是字型缺漏的問題,於是用PDF-XChange查看文件屬性,編碼為UniCNS-UCS2-H,字型是細明體_HKSCS。

在套件的目錄中看到了有一個cmaps的目錄,裡頭看似有許多.bcmap的檔案,含了UniCNS-UCS2-H.bcmap

什麼是 UniCNS-UCS2-H

  • UniCNS-UCS2-H 是 Adobe 的一個 CMap 名稱,常用於繁體中文 CID 字型中。

  • UCS2」代表 Unicode 字符集(用兩個位元組表示,即 UTF-16 的基本多語言平面 BMP)。

  • CNS」代表中華民國(台灣)所訂定的 CNS11643 字符集。

  • H」代表水平書寫(Horizontal),如果是垂直書寫則會是 V


不管,反正檢視會漏字。
在查看時也發現新版的套件改用了.mjs而不是.js,所以在IIS MINE類型中把
.ftl  text/plain  >>套件中文化用
.mjs application/javascript
.bcmap application/octet-stream
新增上去,結果無法顯示的字就出現了,連版本更新也不用了。

如果是web.config,也可加入方便本機debug
<system.webServer>
  <staticContent>
   <remove fileExtension=".mjs"/>
   <mimeMap fileExtension=".mjs" mimeType="text/javascript"/>
   <remove fileExtension=".bcmap"/>
   <mimeMap fileExtension=".bcmap" mimeType="application/octet-stream"/>
    <remove fileExtension=".ftl"/>
   <mimeMap fileExtension=".ftl" mimeType="text/plain"/>
  </staticContent>
</system.webServer>
 

2025年4月29日 星期二

VS CODE離線安裝套件方式

VS CODE可攜式安裝下載 https://code.visualstudio.com/download,點選windows 下.zip x64下載VSCode-win32-x64-1.99.3.zip,解壓縮到某目錄。

安裝離線版套件,例如安裝powershell套件,

先安裝最新版 powershell ,進入https://github.com/PowerShell/PowerShell

在右方Releases 會顯示最新版本號,點選進入去下載 PowerShell-7.5.1-win-arm64.msi


再到 https://marketplace.visualstudio.com/ 找需要的安裝檔vsix。


導引到https://github.com/PowerShell/vscode-powershell 一樣在右方Releases 會顯示最新版本號,點進去下載powershell-2025.0.0.vsix


開啟code.exe ,點選左方sidebar 的Extensions, 在視窗右上方 ... 選取 install from VSIX ...,就可以離線安裝所需的套件了。

心得:powershell 7功能較多,雖無像powershell 5 自帶ISE,但使用VS CODE套件也足以滿足所需,重點是還可以debug,十分方便。



2024年8月16日 星期五

ReportViewer 工具列顯示中文

VS專案中要升級舊版的report viewer,已經不用再去安裝runtime,直接以NuGet方式安裝Microsoft.ReportingServices.ReportViewerControl.WebForms  150.1652.0 ,但部署後,工具列都是英文沒有中文。

但在bin下其實有本地化的目錄zh-CHT 所以應該有支援多語系,在bing和google了半天都找不到想要的,覺得這二個搜尋引擎好像愈來愈難找到想要的資訊,是我的錯覺嗎???

後來想到用保哥很推薦的felo search(https://felo.ai/),還真的沒讓我失望耶。

輸入了 Microsoft.ReportingServices.ReportViewerControl.WebForms zh-CHT  詳列了做法。主要是在web.config加入以下設定。

<configuration>

  <system.web>

    <globalization culture="zh-CHT" uiCulture="zh-CHT" />

  </system.web>

</configuration>

將zh-CHT 目錄下的dll加入專案參考後,重新部署,工具列就出現中文了。


2017年9月18日 星期一

免費的白箱檢測工具puma scan

上網找了免費的白箱檢測工具,找到了puma scan

因為支援OWASP TOP 10的檢測,所以這是一個符合客戶需求又能與Visual studio結合的工具(白話說...交差了事矣....)
更重要的是這不用錢....檢測工具都貴森森的,尤其是源碼檢測工具。

https://marketplace.visualstudio.com/items?itemName=PumaSecurity.PumaScan#overview

Diagnostic extension for the .NET Compiler Platform ("Roslyn") that performs static code analysis for vulnerabilities identified in the OWASP Top 10, SANS/CWE Top 25, and other common insecure coding patterns.
Current analysis categories:
  • Insecure Configuration
  • SQL Injection
  • LDAP Injection
  • Path Tampering
  • Weak Password Configuration
  • Unvalidated Redirects
  • Cross-Site Scripting
  • Cross-Site Request Forgery
  • Weak Input Validation
  • Insecure Cryptography
  • Deserialization Vulnerabilities 
 
puma scan針對Roslyn且只適用在VS2015以上的版本,安裝方式可以參考

https://www.pumascan.com/installation.html#installation


VSIX>>在Online > Visual Studio Galley, search for “Puma Scan”

NuGet>>在Tools > NuGet Package Manager > Package Manager Console輸入
Get-Project -All | Install-Package Puma.Security.Rules

如果只裝了VSIX,則要針對單一專案進行分析時,就在專案按右鍵>>Analyze>>Run Code Analysis。分析後的結果會顯示在Output window。Error List Window 也會條列出。

如果想要匯出好看一點的報告,可以下載安裝 Error List Manager 2 (ELM2)
方便在Error List Window匯出HTML、EXCEL、PDF的報告,雖然陽春且無法選擇匯出欄位,但總比直將將output複製貼上存成文字檔要來得好。

分析的Puma.Security.Rules 可以自行勾選, 檢測的原則可以參考 

https://www.pumascan.com/rules.html

初步研究到此,接下來困難的是要看懂檢測的結果以及條列高中低的等級。

唉哎.....好多的warning............................

2016年9月23日 星期五

IE IFRAME 遺失SESSION問題

在一個ASP開發的網站,以IFRAME方式顯示另一個網站的MVC WEBSITE功能。

結果在部份機器的IE瀏覽器上,會有SESSION遺失的問題。但在FIREFOX或GOOGLE CHROME上則不會有問題。

找了很久,突然想到在之前舊的WEB FORM網站,在頁面Page_Load事件會加入一段程式碼

 HttpContext.Current.Response.AddHeader("p3p", "CP=""IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT""")





於是在新網站,Global.asax.cs檔加入以下事件及程式碼


 protected void Application_BeginRequest(object sender, EventArgs e)
        {
            HttpContext.Current.Response.AddHeader("p3p", "CP=\"IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT\"");
        }

  
解決問題了.       

2016年5月20日 星期五

ASP.MVC dropdownlistfor selected not binding

使用ViewBag方式進行前端VIEW的下拉選單binding。
其中有個欄位的下拉選單一直無法顯示正確的值。

測了半個小時,看到這一篇,才猛然想到....這個問題以前同事講過啊....
 
http://stackoverflow.com/questions/2278056/dropdownlistfor-not-selecting-value


總之ViewBag的名稱不要取得和欄位名稱一樣,MVC會發瘋的。

2016年4月7日 星期四

RDLC匯出PDF無法正確顯示中文問題

人客反應,RDLC上的一張表,畫面上預覽中文都很正常,但匯出成PDF後,有一個中文字變成口了。


咦,這似曾相似的中文問題

看來狀況不同,因為這個中文字不是自造字,字型也都設了細明體/標楷體,畫面上預覽也很正常,但匯出PDF就變成細細長長的四方框了。但奇妙的是把rdlc換回rdl在report designer上預覽及匯出也都很正常。

確認後,這個字原來是第二字面的中文字,輸入法中得要勾選包中日韓統一的表文字擴充A與擴充B,才能選得到這些字,難怪大家手忙腳亂的用了注音、速成、倉頡輸入法都找不到這個字。

經過幾天胡測亂測,最後竟然發現解決的方法,跟似曾相識的中文問題解法一樣。

網站是用vs2013開發,當初web.config參考是用Microsoft.ReportViewer.WebForms是11.0版本,那天心血來潮,下載了report viewer runtime 2015 ,把report viewer版本的換成12.0的版本。

結果匯出來的PDF中文竟然顯示正常了。

歡呼。

web.conifg,在<system.web> <assemblies> 下 ,
        <add assembly="Microsoft.ReportViewer.WebForms, Version=12.0.0.0, Culture=neutral, PublicKeyToken=89845DCD8080CC91"/>
        <add assembly="Microsoft.ReportViewer.Common, Version=12.0.0.0, Culture=neutral, PublicKeyToken=89845DCD8080CC91"/> 


<system.webServer> <handlers>下,
<add name="ReportViewerWebControlHandler" preCondition="integratedMode" verb="*" path="Reserved.ReportViewerWebControl.axd" type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=12.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />

2015年11月17日 星期二

VS2015 部署問題 BC30456: 'InitializeCulture'

使用VS2015 publish web app後,部份aspx的程式進入後顯示以下錯誤訊息,

編譯錯誤

描述: 資源編譯無法完成 (錯誤發生於服務要求)。請檢閱下列的特定錯誤詳細資料,並視情況修改您的原始程式碼。

編譯器錯誤訊息: BC30456: 'InitializeCulture' 不是 'ASP.test0200_search_aspx' 的成員。

查看顯示詳細的編譯器輸出資料後,有顯示這麼一段可疑的訊息

 C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\test\bac62fb0\75a1220a\App_Web_eghhxrxs.0.vb(45) : error BC30560: 'test0200_search' 在命名空間 'menu' 中模稜兩可。 Inherits Global.menu.test0200_search

所以用關鍵字test0200_search進行搜尋後,發現有二個.aspx 有相同的Inherits="menu.test0200_search" %>同時也關連到了code behind .aspx.vb的class名稱,更改為正確的Inherits="menu.test0200_search1" 後,網站執行就正常了。

我想這隻aspx應該是copy and paste修改來的吧。


同時,在這篇討論中 http://forums.asp.net/t/955888.aspx?BC30456+InitializeCulture+is+not+a+member+of+

也提供一個解決方法

During the publishing stage on framework 2.0 uncheck the "allow this precompiled site to be updatable".  Once I unchecked this it published correctly and functioned correctly on IIS.  With it checked I would always receive 'InitializeCulture' is not a member of ...

 試了一下publish web app時,在部署設定選項中不勾選precompiled後網站也是可以正常執行的。

2015年9月2日 星期三

VS2015 部份欄位變亂碼

安裝了VS2015後,將原本的專案PUBLISH。
結果有一個畫面部份欄位中文變成了亂碼。

原本以為是.cshtml中文字亂掉了,結果一看,都是自訂的mvchtmlhelper所產出的label欄位
怪的是,同一個model,部份欄位中文顯示亂碼,但部份欄位則顯示正常的中文。



參考了二篇文章
【茶包射手日記】VS2015程式檔編碼問題
Visual Studio 2015的坑:中文字符串编译后成乱码 (這標題很貼切,真是他媽的坑...)

也用notpad++查看可疑的.cs檔,

咦,還真的是big5咧。





2015年8月11日 星期二

Entity Framework 設定command timeout及isolationlevel

 
修改你的emdx例 MyData.edmx 下的MyData.Context.cs檔
在初始化時加入設定,如下:

 public MyDataContext()
            : base("name=MyDataContext")
{
 this.Database.CommandTimeout = 180;  //秒,語法執行timeout時間
 ((IObjectContextAdapter)this).ObjectContext.CommandTimeout = 180; //這樣也可
 //isolation=readuncommitted         
 ((IObjectContextAdapter)this).ObjectContext.ExecuteStoreCommand("SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;");

}


在SSMS 模擬LOCK狀態
begin transaction
update mytable set mycolymn =1 where myid = 1

然後執行網站上的查詢程式,會發現畫面一直在處理中

在SSMS 執行rollback還原後,網站畫面就可以顯示查詢結果了

在context建立時加入上述設定,就可避掉資料批次異動處理時造成的LOCK而無讀取。


2014年10月6日 星期一

SQL CLR部署到SQL Server 2005問題(6218)

今天將一個原本在SQL 2012上使用的CLR部署到SQL 2005 資料庫,結果出現了以下的錯誤

(161,1): SQL72014: .Net SqlClient Data Provider: Msg 6218, Level 16, State 3, Line 1 組件 'SQLCLR' 的 CREATE ASSEMBLY 失敗,因為組件 'SQLCLR' 驗證失敗。請檢查參考的組件是否為最新的,而且受信任 (針對 external_access 或不安全) 於資料庫中執行。接著將會出現 CLR 驗證器的訊息 (如果有的話)
(161,0): SQL72045: Script execution error.  The executed script:


參考這篇KB

http://msdn.microsoft.com/zh-tw/library/vstudio/dahcx0ww%28v=vs.100%29.aspx

SQL Server 2005 和 SQL Server 2008 僅支援使用 .NET Framework 2.0、3.0 或 3.5 版所建置的 SQL Server 專案。 如果您嘗試部署SQL Server專案,SQL Server 2005或SQL Server 2008,將顯示錯誤消息:Deploy error (SQL01268): .NET SqlClient Data Provider: Msg 6218, Level 16, State 3, Line 1 CREATE ASSEMBLY for assembly 'AssemblyName' failed because assembly 'AssemblyName' failed verification. Check if the referenced assemblies are up-to-date and trusted (for external_access or unsafe) to execute in the database(在進行校驗是您要部署的程式集的名稱)。

所以要將部署時的Target Framework改為 3.5的版本再部署即OK。

2014年9月13日 星期六

IE11 ReportViewer Printer crash

網站是架在WINDOWS 2003 32bit,資料庫則是SQL Server 2005,共用一台主機
開發則是用VS2012 .NET FRAMEWORK4.0,REPORT VIEWER是用

在WINDOWS 7(32  & 64位元)機器上以 IE11測試網站功能,結果RDLC的報表工具列整個走樣。

GOOGLE後,在MASTER PAGE<HEAD>修改
    <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" /> 為

    <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE8" />

工具列顯示正常了,但印表機圖示不見了??

再GOOGLE,將網站加入相容性檢視後,印表機小圖出現了,初次點選要安裝ACTIVEX元件
,完畢後,按下印表機,結果IE直接CRASH嗝屁了....

再GOOGLE,大都是SQL2008R2後的解決方法,不外乎都是說上到.NET 4.5 以及安裝最新版的 REPORT VIEWER 2012 RUNTIME 就好了。

於是先在WINDOWS 2003安裝REPORT VIEWER 2012 RUNTIME(要先裝SQLSysClrTypes.msi X86版本),但開啟網頁後檢視報表點選印表機圖示時,提示要下載安裝的RSClientPrint卻不是SQLSERVER 2012的版本仍是SQL SERVER 2008版本?

想了半天,原來忘了要更改WEB.CONFIG的設定,將原本RDLC的版本都改為11.0.0.0即可。

幸好是用VIRTUALBOX測試 ,整個再還原重來一次就好。

改好WEB.CONFIG

<system.web><compilation debug="false"><assemblies> 下
<add assembly="Microsoft.ReportViewer.Common, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"/>
        <add assembly="Microsoft.ReportViewer.WebForms, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"/>


  <pages ...>  <controls>下
<add assembly="Microsoft.ReportViewer.WebForms, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" namespace="Microsoft.Reporting.WebForms" tagPrefix="rsweb"/>

 <httpHandlers> 下
 <add verb="*" path="Reserved.ReportViewerWebControl.axd" type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" validate="false"/>
   
YA....印表終於正常了。

2014年8月7日 星期四

MVC Entity存檔錯誤值不能為 null。

Entity Framework 6.0
儲存資料表 呼叫SaveChanges(),出現這個錯誤


值不能為 null。
參數名稱: value


原來建立Eneity Model時,自訂的tt檔忘了維護某個欄位的Data Annotation Display屬性,造成欄位屬性變成
       
        [Display(Name = "")]
        public string LogDeptName { get; set; }

 一度以為是傳入的欄位內容值有NULL,最後檢查了半天發現每個欄位都有值但為何還有這個錯誤。原來是Model的問題....

註記一下....


2013年12月19日 星期四

IE9 report viewer 無法切換下頁瀏覽

使用VS2012 MVC 4, 利用IFRAME 內嵌aspx頁面做RDLC報表瀏覽。
在IE10、FIREFOX、CHROME的環境都很OK。
在IE9 讀取報表時很正常,但如果點選下一頁就會出現JAVASCRIPT的錯誤

網頁錯誤詳細資料

使用者代理程式: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C)
時間戳記: Sun, 3 Nov 2013 09:34:40 UTC

訊息: 不正確的引數。
行: 3955
字元: 13
程式碼: 0
URI: https://xxxx/Reserved.ReportViewerWebControl.axd?OpType=Resource&Version=11.0.3366.16&Name=ViewerScript


訊息: 不正確的引數。
行: 3955
字元: 13
程式碼: 0
URI: https://xxxx/Reserved.ReportViewerWebControl.axd?OpType=Resource&Version=11.0.3366.16&Name=ViewerScript


訊息: 不正確的引數。
行: 3955
字元: 13
程式碼: 0
URI: https://xxxx/Reserved.ReportViewerWebControl.axd?OpType=Resource&Version=11.0.3366.16&Name=ViewerScript


看來是一直不斷的LOOP這個不正確的引數錯誤。


自已測了幾天找不出原因..
後來同事只是在aspx頁面中,在FORM TAG外再加了BODY TAG,問題就解決了。...(無言)

以下aspx頁面的內容,原本沒有BODY TAG

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Test.aspx.cs"
    Inherits="Web.Areas.Reports.
Test" %>

<%@ Register Src="~/ReportControl.ascx" TagName="ReportControl" TagPrefix="uc1" %>

<script src="../../../Scripts/jquery-1.9.1.js"></script>
<body>
<form id="form1" runat="server">
    <uc1:ReportControl runat="server" ID="RDL" />
</form>   
</body>





2013年8月11日 星期日

使用VS2012 Debug SQL Assembly

在VS2012如何debug寫好的CLR FUNCTION

1.首先要先將CLR部署到SQL SERVER,例SQL SERVER 2012
2.開啟你的SQLCLR專案,開啟VIEW/SQL Server Object Explorer (或按Ctrl+\+S)
3.在SQL Server Instance按右鍵,勾選 Allow SQL/CLR Debugging

 4.在SQLCLR專案加入一個TestScript.sql
新增說明文字

4.寫一段SQL 用來呼叫你的CLR FUNCITON /STORED PROCEDURE...,並設好程式,中斷點按下Execute With Debugger 就可Debug了。

5.如果debug run顯示錯誤,先試著以系統管理員權限開啟visual studio後再試試。

2013年7月16日 星期二

IIS 8 MVC4 網站

將WEBSITE部署到 windows 2012時出現幾個狀況

無法載入檔案或組件 'Microsoft.Web.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' 或其相依性的其中之一。 系統找不到指定的檔案。

解決方法:
publish時bin檔下也沒這個檔,所以到 http://www.asp.net/mvc/mvc4 去下載mvc4,安裝完後就OK了。

[FileLoadException: 找到的組件資訊清單定義與組件參考不符。 (發生例外狀況於 HRESULT: 0x80131040)]

[FileLoadException: 無法載入檔案或組件 'Microsoft.ReportViewer.Common, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91' 或其相依性的其中之一。 找到的組件資訊清單定義與組件參考不符。 (發生例外狀況於 HRESULT: 0x80131040)]


解決方法:
因有安裝了reportviwer 2012 runtime,可能有CACHE,故重啟IIS 網站所用到的應用程式集區即OK。

2013年7月10日 星期三

HttpException Request timed out

同事反應專案下某個網頁查詢功能突然嗝屁了,輸入查詢條件,按下查詢鍵後,然後等了一些時間後,就出現
[HttpException (0x80004005):要求已經逾時。]的錯誤。

回報說,是突然間才有這個問題,以前都沒有問題,
然後也沒改這隻程式A的程式碼....

自已陸續測了好幾天,也覺得狀況是時好時壞.... 遇到鬼了...

最後,凶手找到了...

就是同事改了另一隻程式B....里頭寫了一段ENDLESS LOOP(當然也是在查些條件下才會發生...難怪我覺得遇到鬼了....)

然後在有問題的這隻程式A中,在一個大家都想不到的地方呼叫程式B(我們壓根都想不到要去測這段程式碼....冏....)

 一切都是誤會. 唉


2013年3月27日 星期三

升級為SQL Server Data Tools BI for VS 2012後

話說,SQL Server BI開發工具BIDS Business intellijgence Developer Studio 所用的版本總是落後Visual Studio一版

上週看到 SSDT(SQL 2012開始 BIDS已經改名為SQL Server Data Tools) 
Microsoft SQL Server Data Tools - Business Intelligence for Visual Studio 2012
下載安裝完後,原本vs2012的SQL Server Database Project 就沒法用了,出現了以下的錯誤訊息。


於是乎又去安裝了最新版的Microsoft® SQL Server® 2012 Data-Tier Application Framework (March 2013),也是沒路用.....
點了Learn more 及Get the lates version of SQL Server Data Tools的連結後,竟然是導引到

We are sorry. The page you requested cannot be found.


整個灰灑灑....

最後找回SQL Server Data Tools - December 2012 update(Visual Studio 2012)

重新安裝一次SSDT 後,就回復正常了.

同一個工具還分多個版本....金害啊...


2012年7月17日 星期二

linq dbml IsComposable 屬性

專案是使用linq to sql建立dmbl .

某天由資料庫主機更新某幾個Stored Procedure的dmbl定義後,
某一隻程式在儲存時會呼叫到更新後的Stored Procedure. 結果一直出現下列的錯誤

找不到資料行 "dbo" 或者使用者自訂函數或彙總 "dbo.zspXXXXX",或是名稱模糊不清。

但檢查了資料庫的SP定義和dbml中的定義完全是一樣的啊,怎麼會找不到咧??

於是打開dbml檔的XXXXX.designer.cs 查看, 發現呼叫的SP和其他SP比較後,多了一個屬性的定義 IsComposable="true"如下:

[global::System.Data.Linq.Mapping.FunctionAttribute(Name="dbo.zspXXXX" , IsComposable="true")]
        public int zspXXXX([global::System.Data.Linq.Mapping.ParameterAttribute(DbType="SmallInt")] System.Nullable<short> orgn, [global::System.Data.Linq.Mapping.ParameterAttribute(DbType="SmallInt")] System.Nullable<short> ym , [global::System.Data.Linq.Mapping.ParameterAttribute(DbType="SmallInt")] System.Nullable<short> isAuto)
        {
            IExecuteResult result = this.ExecuteMethodCall(this, ((MethodInfo)(MethodInfo.GetCurrentMethod())), orgn, ym, isAuto);
            return ((int)(result.ReturnValue));
        }


根據MSDN上的定義,

IsComposable 屬性 是取得或設定方法是對應至函式,還是對應至預存程序。如果是函式,則為 true,如果是預存程序,則為 false。 


看來預設是false. 


將這個屬性移除後, 重新compile, 呼叫SP就正常了.

2012年3月29日 星期四

Render RDLC on the fly

background將RDLC匯出成excel或pdf或word (vs2011)

public void renderRDL(string type, String rpath ,params ReportDataSource[] rds)
{
ReportViewer rv = new ReportViewer();
rv.LocalReport.ReportPath = rdlPath;
foreach (ReportDataSource rs in rds)
{
         rv.LocalReport.DataSources.Add(rs);
}
rv.ID = "myrpt";
string mimeType;
string encoding;
string fileNameExtension;
string deviceInfo = "";
Warning[] warnings;
string[] streams;
byte[] renderedBytes;
renderedBytes = rv.LocalReport.Render(type, deviceInfo,out mimeType, out encoding, out fileNameExtension, out streams, out warnings); HttpContext.Current.Response.Buffer = true; HttpContext.Current.Response.Clear(); HttpContext.Current.Response.ContentType = mimeType; HttpContext.Current.Response.HeaderEncoding = System.Text.Encoding.GetEncoding("big5"); //中文檔名時加此不會變亂碼HttpContext.Current.Response.AddHeader("content-disposition", "attachment; filename=我的表." + fileNameExtension); HttpContext.Current.Response.BinaryWrite(renderedBytes); HttpContext.Current.Response.End();
}
 }

IIS 網站無法下載中文檔名檔案因為取消高位元字元

 網址+中文檔案名稱方式下載檔案顯示 404 - 找不到檔案或目錄。 但英數字檔案名稱則可下載。 因為設定GCB IIS,其中1項 將高位元字元預設取消勾選了。 27 TWGCB-04-014-0028 要求篩選與其他限制模組 允許高位元字元 這項原則設定決定查詢...