求助:WebSpere VS IE 時IE中運行.NET的Windows控制項出現的問題

來源:互聯網
上載者:User

求助:WebSpere VS IE 時IE中運行.NET的Windows控制項出現的問題
最近小弟搞一個工程,B/S的,比較的麻煩,需要將.net和j2ee聯合使用
伺服器是j2ee,使用什麼阿法奇或湯姆貓之類的基於java的發布器,沒有IIS ,
用戶端為一個在IE中啟動並執行一個使用c#編寫的WindowsForm控制項
網頁內嵌一個控制項自然又牽涉到控制項的下載和自動更新
首先在要啟動並執行機器上裝了.NET架構1.1,進入,然後進入
[控制台]-[管理工具]-[Microsoft .NET Framework 1.1 Configuration]
然後進入[我的電腦]-[運行庫安全性原則]-[電腦]-[程式碼群組]-[All_Code]進入它的屬性對話方塊
中,把它的[許可權集]設為[FullTrus]

本來參考相關材料顯示該控制項的HTML頁面代碼為
<html>
 <head>
  <title>電子病曆編輯器示範</title>
 </head>
 <body>
  <object id="mycontrol" width="100%" height="90%" classid="DocumentLib.dll#TextDocumentLib.EditPanel"
    VIEWASTEXT>
  </object>
  <input type="button" value="初始化" onclick="init()" />
  
 </body>
</html>

但將 documentlib.dll 拷貝到運行j2ee的伺服器上,該頁面不能正確顯示,後覺得可能發布器有什麼問題
於是自己編了個連接埠監聽程式,分析出了差別,原來在於HTTP返回的contenttype有差別,
至於為什麼有這個差別我就沒深究了,我在伺服器上加了一個JSP,檔案名稱為 dll.jsp,代碼如下
---------------------------------------------------------------------------------------------------
<%@ page contentType="text/html; charset=GBK" %><%
try
{
com.haitai.emr.common.Debug.println("DLL.jsp");
response.setContentType("application/octet-stream"); //設定返回的檔案類型
FileInputStream hFile = new FileInputStream(pageContext.getServletContext().getRealPath("/") + "//DocumentLib.DLL"); // 以byte流的方式開啟檔案
System.out.println(pageContext.getServletContext().getRealPath("/") + "//emrtext//EMRTextDocumentLib.DLL");
int i = hFile.available(); //得到檔案大小
byte data[] = new byte[i];
hFile.read(data); //讀資料
hFile.close();
ServletOutputStream toClient = response.getOutputStream(); //得到向用戶端輸出位元據的對象
toClient.write(data); //輸出資料
toClient.flush();
toClient.close();
}
catch(IllegalStateException e){
e.printStackTrace();
}
catch(Throwable ext){
ext.printStackTrace();

%><%@ page import="java.lang.*" %><%@ page import="java.util.*" %><%@ page import="java.io.*" %>
-----------------------------------------------------------------------------------------------------

HTML代碼變成了
<html>
 <head>
  <title>電子病曆編輯器示範</title>
 </head>
 <body>
  <object id="mycontrol" width="100%" height="90%" classid="dll.jsp#TextDocumentLib.EditPanel"
    VIEWASTEXT>
  </object>
  <input type="button" value="初始化" onclick="init()" />
  
 </body>
</html>

結果頁面能正確顯示了

現在出現的問題是這個頁面開啟時老是串連dll.jsp,估計是檢查最新版本吧.我根據一些資料猜測可以在頁面引用
應用程式設定檔來避免這個重複的操作.伺服器上可以放置一個合適的 webconfig.xml ,HTML頁面改成如下
<html>
 <head>
  <title>電子病曆編輯器示範</title>
  <link rel="Configuration" href="webconfig.xml" />
 </head>
 <body>
  <object id="mycontrol" width="100%" height="90%" classid="dll.jsp#TextDocumentLib.EditPanel"
    VIEWASTEXT>
  </object>
  <input type="button" value="初始化" onclick="init()" />
  
 </body>
</html>
可是我不知道如何編寫這個webconfig.xml,我用 sn.exe makecert.exe signcode.exe 對那個控制項搞了個強式名稱
,處理後的dll檔案可以扔進Windows2000的assembly高速緩衝中,然後嘗試的寫了個如下的webconfig.xml ,可以好像沒有用
<configuration>
 <runtime>
  <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
   <dependentAssembly>
    <assemblyIdentity name="DocumentLib" publicKeyToken="4b96b5c6ae565d61" Culture="neutral" />
    <bindingRedirect newVersion="1.0.1803.26449" />
    <codeBase version="1.0.1803.26449" href="DocumentLib.dll" />
   </dependentAssembly>
  </assemblyBinding>
 </runtime>
</configuration>
 
 還有一個問題,在某些機器中,控制項載入緩慢,仔細研究,發現程式在"System.Resources.ResourceManager.GetObject()"
 中停留了很長時間,我還有一次定位到了"System.ConfigTreeParser.Parse(string , string , boolean )"上,
 不知道是什麼地區設定還是許可權有什麼問題或者其他原因.
 
 問題總結:
 1.如何對IE中啟動並執行.netWindows控制項進行自動下載和更新,最好靠個 <link rel="Configuration" href="webconfig.xml" />
 避免無意義的下載dll檔案
 2.能不能不使用上面的 dll.jsp 而直接定向到 dll檔案本身
 3.如何解決在某些機器中控制項載入緩慢問題
 4.上面的發布器對檔案名稱大小寫敏感, DocumentLib.dll 和 DocumentLib.DLL是不同的, vs.net編譯產生 dll ,而IE卻老是
 視圖下載 DLL,害的我拷貝到伺服器上時要改dll為DLL , 不知能不能少這點麻煩.
 
 
 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.