❶ 《Web程序設計ASP.NET第2版》pdf下載在線閱讀全文,求百度網盤雲資源
《Web程序設計ASP.NET第2版》網路網盤pdf最新全集下載:
鏈接:https://pan..com/s/1ayPcM5FHJG2RHV5BhMjm2w
❷ 水晶報表列印總多打一張空白頁
這個問題我也遇到過,解決方法的話如下:
Crystal 在asp.net下列印時默認為導罩州出pdf格式列印,但檢查發現導出該格式時存在1:導出空頁現象(而且攔啟空頁上還有一豎線);2: 因報表中有條碼,導出或列印時會報錯如下簡悶如:「 文件 C:\DOCUME~1\EPC_SE~1\ASPNET\LOCALS~1\Temp\DMS.Client.DMSClient.Repair.RR_Fiscal {0F7D0A60-7460-4E8C-ACAE-27ABBE428D7F}.rpt 內出錯:尚未執行操作。」
經學習可將CrystalReportViewer的PrintMOde調為ActiveX格式,但需要作一些附加操作:
一、下載PrintControl.cab,並放置在網站上;
二、在Web.config中增加如下配置:
<configSections>
<sectionGroup name="businessObjects">
<sectionGroup name="crystalReports">
<section name="printControl" type="System.Configuration.NameValueSectionHandler, System, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, Custom=null" />
</sectionGroup>
</sectionGroup>
</configSections>
<businessObjects>
<crystalReports>
<printControl>
<add key="url" value="http://172.17.197.2/PrintControl.cab" /> 「註:該處代表存放Cab位置」
</printControl>
</crystalReports>
</businessObjects>
❸ 如何對web.config進行加密和解密
在WEB網站開發過程中,如果我們將資料庫連接字元串封裝到.DLL文件中,將會給資料庫和程序的遷移帶來麻煩,因為萬一伺服器地址或
者資料庫發生變更,那麼我們就不得不修改源程序並重新將其編譯。更好的解決方法是將資料庫連接字元串寫入到web.config配置文件中,可問題是將連
接字元串寫入到web.config文件中之後,任何人都能打開看到所連接的資料庫名和密碼,又會帶來安全隱患,因此為了保證資料庫的安全性,我們可以通
過使用微軟IDE自帶的命令aspnet_regiis.exe將配置文件web.config中指定的標簽進行加密,如果以後想查看加密後的連接字元
串,我們還可以使用aspnet_regiis.exe將加密後的字元串進行解密。
1. 加密通用語法
加密一個特定網站的web.config文件的通用形式
aspnet_regiis.exe -pef secion physical_directory -prov provider
或
aspnet_regiis.exe -pe secion -app virtual_directory -prov provider
其中,各個參數的含義如下:
section表示要加密的配置節
physical_directory用於指定站點的物理路徑。
virtual_directory用戶指定虛擬路徑。
provider指定加密提供程序。
加密一個特定站點的連接字元串就是:
aspnet_regiis.exe -pef "connectionStrings" "你的web項目路徑" -prov ""
其中是Windows數據保護API(DPAPI)提供程序,它使用Windows內置的密碼學技術來加解密配置節。默認情況下,這個提供程序使用本機的密鑰。
2. 加密方法
運行Visual Studio 2008命令提示
加密後的結果
<connectionStrings configProtectionProvider="">
<EncryptedData>
<CipherData> <CipherValue>AQAAANCMnd8BFdERjHoAwE/Cl+sBAAAAy1WyvzomB0WAlqYo++bAce//lsg/so66+//LD9H9WQ9uF3t/0MoMI9tbrWdFJ1Yu5/e3PAV4RCbCvDlPD0VC7hxtDMqfRjQ+1OhTdk2woiSNpx0TzXwZE25o4vlXq/+lZtAj8lzf2bK+/L0+6bizStRZ7BDnOngV//CVDQ==</CipherValue>
</CipherData>
</EncryptedData>
lt;/connectionStrings>
3. 解密
解密該連接字元串也很簡單
aspnet_regiis.exe -pdf "connectionStrings" '你的web項目路徑"
解密後的結果:
<connectionStrings>
<add name="Sql" connectionString="Data Source=.;Initial Catalog=MySchool;Integrated Security=True" />
</connectionStrings>
4. 後台代碼讀取配置文件web.config中資料庫連接字元串的方法:
using System.Configuation;
…
protected void Page_Load(object sender, EventArgs e)
{
lblMessage.Text = ConfigurationManager.ConnectionStrings["Sql"].ToString();
}
…
5. 在連接字元串的加密和解密的過程中,需要注意一下幾點。
使用加密的連接字元串
使用加密的連接字元串不需要編碼解密,ASP.NET會自動對加密內容進行解密。
加密和解密在同一台計算機上使用
在加密過程中,使用了一個基於本機的密鑰。這就意味著加密和解密必須在同一台計算機上進行,否則將不能解密。同時,在一台計算機上加密的配置,在另一台計算機上將不能正常使用。
中文路徑問題
該命令對中文支持不是很好。如果站點的路徑中有中文字元,也許不能正常加解密。
❹ asp.net 加密字元串的代碼寫在哪個文件里
加密網站中的配置信息,我們不需要寫任何代碼,也不需要修改任何代碼,只需要使用 aspnet_regiis 工具修改配置文件即可.
比如我們有下面一個配置文件需要加密:
<configuration>
<connectionStrings>
<add name="SqlServices" connectionString="Data Source=localhost;
Integrated Security=SSPI;Initial Catalog=Northwind;" />
</connectionStrings>
</configuration>
假設這個配置文件在 MyApplication 目錄下。
加密命令
aspnet_regiis -pe "connectionStrings" -app "/MyApplication"
aspnet_regiis 命令在你安裝的 .net Framework 目錄下, 默認在:
C:\WINDOWS\Microsoft.Net\Framework\v2.0.*
加密後的效果:
<configuration>
<connectionStrings configProtectionProvider="">
<EncryptedData Type="www.w3.org/2001/04/xmlenc#Element"
xmlns="www.w3.org/2001/04/xmlenc#">
<EncryptionMethod Algorithm="www.w3.org/2001/04/xmlenc#tripledes-cbc" />
<KeyInfo xmlns="www.w3.org/2000/09/xmldsig#">
<EncryptedKey xmlns="www.w3.org/2001/04/xmlenc#">
<EncryptionMethod Algorithm=" www.w3.org/2001/04/xmlenc#rsa-1_5" />
<KeyInfo xmlns="www.w3.org/2000/09/xmldsig#">
<KeyName>Rsa Key</KeyName>
</KeyInfo>
<CipherData> <CipherValue>0RU0XfRexc6aLFYZM+f+IWZVINqTZAAunysoVPv0dliPM72D
34MJ/gX7pzvhSJNqCLiXeyjsayse
12oAuF4rlIEraa//0QB
=</CipherValue>
</CipherData>
</EncryptedKey>
</KeyInfo>
<CipherData> <CipherValue>
KmD2h7hJo2BeTIjyIOAq/2J1saLDJm
+d
zA8qEF//
ZJrjYcHIk3I27oh/XuxtSQ0VNOl
gfSsM/=
</CipherValue>
</CipherData>
</EncryptedData>
</connectionStrings>
</configuration>
注意:為了避免一行太長,我這里把加密後信息加了幾個回車符。
ASP.NET 在處理 Web.config 文件時會自動對該文件的內容進行解密。因此,
不需要任何附加步驟即可對已加密的配置設置進行解密,供其他 ASP.NET 功能使用或用於訪問代碼中的值。
如果你想修改這些配置信息,就需要解密這個文件,然後再加密。解密用 aspnet_regiis.exe 命令的 -pd 選項。
參考命令如下:
aspnet_regiis -pd "connectionStrings" -app "/MyApplication"
上面給的範例是 針對 IIS 的站點,如果你的站點是使用VS2005 的 ASP.net Development Server
則需要用 -pef 參數,當然 iis 站點也可以這么用
aspnet_regiis.exe -pef "connectionStrings" "D:\My2005Codes\WebTestCode\TestWEBSite"
說明:
-pef 對指定物理(非虛擬)目錄中的 Web.config 文件的指定配置節進行加密。
對應的這個解密則是
-pdf 參數 對指定物理(非虛擬)目錄中的 Web.config 文件的指定配置節進行解密。
應該是可以用的啊,你看開始菜單裡面的vs2008下面有一個vs2008工具的目錄,在他下面有一個vs2008命令行,用這個就可以。加密後可以直接讀取程序運行時自動解密的,放心。不影響不需要運行時寫另外代碼解密
❺ macbook上打開word文件,頁面如何放大
1、將要轉換成word格式的Pages文件編輯好,保存。
2、然後點擊屏幕內頂部的菜單欄的文件,選擇導出為—>Word
5、導出之後就可以在你保存的位置上找到導出的Word文檔了。
❻ 「對路徑的訪問被拒絕.」 是怎麼回事
右鍵打來開報錯路徑的自的菜單,選擇「屬性」。
在「屬性」窗體中切換到「安全」選項框
在「安全」選項框中,點擊「編輯」,進入「許可權」窗體
在「用戶和組」中選擇「IIS_USRS」,賦予其「完全控制」許可權。
PS:只有寫入許可權是不夠的,仍舊會報同樣的錯誤。
完成配置後,就可以在網站後台刪除圖片或其他文件
❼ asp.net的配置文件web.config怎麼解密
使用「」形式來加密
test.aspx程序文件基本如上,
把
section.SectionInformation.ProtectSection(「」);
改成
section.SectionInformation.ProtectSection(「」);
但這個時候你訪問網站的時候很有可能會出現
說明:
在處理向該請求提供服務所需的配置文件時出錯。請檢查下面的特定錯誤詳細信息並適當地修改配置文件。
分析器錯誤信息: 未能使用提供程序「」進行解密。
提供程序返回錯誤信息為: 打不開 RSA 密鑰容器。
這樣的錯誤,解決方法是:
進dos運行:aspnet_regiis -pa 「NetFrameworkConfigurationKey」
「NT AUTHORITY\NETWORK SERVICE」
如果運行出錯,需要把目錄 C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727
放入環境變數path中。此時就可以成功訪問網站了。
同樣可以通過命令行來實現「」加密
注意:你也可以不運行 aspnet_regiis -pa 「NetFrameworkConfigurationKey」
「NT AUTHORITY\NETWORK SERVICE」命令來注冊默認的
的RSA 密鑰容器
方法如下:
1)創建一個可導出的rsa密鑰容器,命名為Key
aspnet_regiis -pc 「Key」 -exp
2)在你要加密的信息前面指定密鑰容器,如:
<configProtectedData><providers><clear /><add name=」KeyProvider」 type=」System.Configuration., System.Configuration, Version=2.0.0.0,Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL」 keyContainerName=」Key」 useMachineContainer=」true」/></providers></configProtectedData><connectionStrings><add name=」SQLConnString」 connectionString=」Data Source=yourIP;Initial Catalog=test;User Id=yourID;Password=yourPassword;」providerName=」System.Data.SqlClient」 /></connectionStrings>
並且確保在configuration節的xmlns屬性有如下值:
3)對配置文件進行加密
aspnet_regiis -pef 「connectionStrings」 「E:\project\Test」 -prov 「KeyProvider」
參數分別為:需要加密的配置節、項目所在目錄的物理路徑、加密所使用的密鑰容器名稱
再看web.config文件,就會發現connectionStrings節已經被加密了,但
是運行程序會發現程序仍然可以正確訪問資料庫。
此時,只需運行:
aspnet_regiis -pdf 「connectionStrings」 「E:\project\Test」
就可以對web.config文件進行解密。
(注意,如果還是有錯誤,那可能是您沒有給生成的密匙文件足夠的許可權,
去到C:\Documents and Settings\All Users\Application Data\Microsoft\Crypto\RSA\MachineKeys
目錄下,找到剛生成的密匙文件,把network service用戶的讀取許可權賦予給它,就可以了,
直接用命令的話也可以:命令如下 aspnet_regiis -pa 「Key」 「NT AUTHORITY\NETWORK SERVICE」 ,
可能需要重新啟動iis
4)把密鑰容器導出為xml文件
aspnet_regiis -px 「Key」 「e:\Key.xml」
這個命令只導出公鑰,因此以後只能用於加密,而無法解密。
aspnet_regiis -px 「Key」 「e:\Keys.xml」 -pri
這個則連私鑰一起導出了,所以我們要用這個。
5)把密鑰容器刪除
aspnet_regiis -pz 「Key」
刪除後再運行程序,會提示出錯:
分析器錯誤信息: 未能使用提供程序「KeyProvider」進行解密。
提供程序返回錯誤信息為: 打不開 RSA 密鑰容器。
同理可以證明,在任何一台未安裝正確的密鑰容器Key的機器上,
程序都無法對connectionStrings節進行解密,因此也就無法正常運行。
6)導入key.xml文件
aspnet_regiis -pi 「Key」 「e:\Keys.xml」
此時,再運行程序會發現又可以解密了。證明加密與解密機制運行正常。
最後說一下這個機制所提供的安全性保障可以運用在什麼方面:
對winform程序的app.config進行加密實際意義並不大,因為無論如何,
客戶機都可以通過運行aspnet_regiis -pdf 來對配置文件進行解密,從而暴露敏感信息。
對於web.config進行加密的意義也僅限於,當web.config文件不小心泄露時,
不會同時泄露敏感信息,如果惡意攻擊者已經取得了在伺服器上運行程序的許可權,
那麼同app.config一樣,可以很容易通過通過運行aspnet_regiis -pdf 獲取明文了。
還有,通過aspnet_regiis -pa 「Key」 「NT AUTHORITY\NETWORK SERVICE」
控制對不同用戶對密鑰容器的訪問許可權,應該還可以進一步獲取一些安全性,
比如可以控制某些用戶即使登錄到伺服器上,也無法用aspnet_regiis -pdf對配置文件進行解密。
❽ asp.net導出Excel文件出錯
asp.net導出excel有多種方法,最簡單的是輸出文件流到文本文件中,然後改後綴,但無法設置字元格式,像身份證之類的超過14個數字就會補零,如果數據量不大,可以使用gridview作中轉來導出。。。
❾ .net如何將頁面生成pdf
using System;
using System.IO;
using System.Text;
using System.Collections;
namespace PDFGenerator
{
public class PDFGenerator
{
static float pageWidth = 594.0f;
static float pageDepth = 828.0f;
static float pageMargin = 30.0f;
static float fontSize = 20.0f;
static float leadSize = 10.0f;
static StreamWriter pPDF=new StreamWriter("E:\\myPDF.pdf");
static MemoryStream mPDF= new MemoryStream();
static void ConvertToByteAndAddtoStream(string strMsg)
{
Byte[] buffer=null;
buffer=ASCIIEncoding.ASCII.GetBytes(strMsg);
mPDF.Write(buffer,0,buffer.Length);
buffer=null;
}
static string xRefFormatting(long xValue)
{
string strMsg =xValue.ToString();
int iLen=strMsg.Length;
if (iLen<10)
{
StringBuilder s=new StringBuilder();
int i=10-iLen;
s.Append('0',i);
strMsg=s.ToString() + strMsg;
}
return strMsg;
}
static void Main(string[] args)
{
ArrayList xRefs=new ArrayList();
//Byte[] buffer=null;
float yPos =0f;
long streamStart=0;
long streamEnd=0;
long streamLen =0;
string strPDFMessage=null;
//PDF文檔頭信息
strPDFMessage="%PDF-1.1\n";
ConvertToByteAndAddtoStream(strPDFMessage);
xRefs.Add(mPDF.Length);
strPDFMessage="1 0 obj\n";
ConvertToByteAndAddtoStream(strPDFMessage);
strPDFMessage="<< /Length 2 0 R >>\n";
ConvertToByteAndAddtoStream(strPDFMessage);
strPDFMessage="stream\n";
ConvertToByteAndAddtoStream(strPDFMessage);
////////PDF文檔描述
streamStart=mPDF.Length;
//字體
strPDFMessage="BT\n/F0 " + fontSize +" Tf\n";
ConvertToByteAndAddtoStream(strPDFMessage);
//PDF文檔實體高度
yPos = pageDepth - pageMargin;
strPDFMessage=pageMargin + " " + yPos +" Td\n" ;
ConvertToByteAndAddtoStream(strPDFMessage);
strPDFMessage= leadSize+" TL\n" ;
ConvertToByteAndAddtoStream(strPDFMessage);
//實體內容
strPDFMessage= "(http://www.wenhui.org)Tj\n" ;
ConvertToByteAndAddtoStream(strPDFMessage);
strPDFMessage= "ET\n";
ConvertToByteAndAddtoStream(strPDFMessage);
streamEnd=mPDF.Length;
streamLen=streamEnd-streamStart;
strPDFMessage= "endstream\nendobj\n";
ConvertToByteAndAddtoStream(strPDFMessage);
//PDF文檔的版本信息
xRefs.Add(mPDF.Length);
strPDFMessage="2 0 obj\n"+ streamLen + "\nendobj\n";
ConvertToByteAndAddtoStream(strPDFMessage);
xRefs.Add(mPDF.Length);
strPDFMessage="3 0 obj\n<</Type/Page/Parent 4 0 R/Contents 1 0 R>>\nendobj\n";
ConvertToByteAndAddtoStream(strPDFMessage);
xRefs.Add(mPDF.Length);
strPDFMessage="4 0 obj\n<</Type /Pages /Count 1\n";
ConvertToByteAndAddtoStream(strPDFMessage);
strPDFMessage="/Kids[\n3 0 R\n]\n";
ConvertToByteAndAddtoStream(strPDFMessage);
strPDFMessage="/Resources<</ProcSet[/PDF/Text]/Font<</F0 5 0 R>> >>\n";
ConvertToByteAndAddtoStream(strPDFMessage);
strPDFMessage="/MediaBox [ 0 0 "+ pageWidth + " " + pageDepth + " ]\n>>\nendobj\n";
ConvertToByteAndAddtoStream(strPDFMessage);
xRefs.Add(mPDF.Length);
strPDFMessage="5 0 obj\n<</Type/Font/Subtype/Type1/BaseFont/Courier/Encoding/WinAnsiEncoding>>\nendobj\n";
ConvertToByteAndAddtoStream(strPDFMessage);
xRefs.Add(mPDF.Length);
strPDFMessage="6 0 obj\n<</Type/Catalog/Pages 4 0 R>>\nendobj\n";
ConvertToByteAndAddtoStream(strPDFMessage);
streamStart=mPDF.Length;
strPDFMessage="xref\n0 7\n0000000000 65535 f \n";
for(int i=0;i<xRefs.Count;i++)
{
strPDFMessage+=xRefFormatting((long) xRefs[i])+" 00000 n \n";
}
ConvertToByteAndAddtoStream(strPDFMessage);
strPDFMessage="trailer\n<<\n/Size "+ (xRefs.Count+1)+"\n/Root 6 0 R\n>>\n";
ConvertToByteAndAddtoStream(strPDFMessage);
strPDFMessage="startxref\n" + streamStart+"\n%%EOF\n";
ConvertToByteAndAddtoStream(strPDFMessage);
mPDF.WriteTo(pPDF.BaseStream);
mPDF.Close();
pPDF.Close();
}
}
另外:C#中生成PDF文件的方法挺多,可以使用iTextSharp控制項,還有aspose的控制項也可以。這些控制項的功能都很強大,所以控制項的大小也會很大