asp.net 读取SAP数据(rfc形式全过程)
平台:vs2005,ecc6 ,orcale 数据库
1.首先用se37,建立一个读取函数,如图
2.先添加三个com组件Interop.SAPFunctionsOCX.dll,Interop.SAPLogonCtrl.dll,Interop.SAPTableFactoryCtrl.dll
下面的代码我是转载其他网站,
以web形式对function module进行调用与form形式基本一样,唯一值得注意的地方就是:"An ActiveX control must be run in an STA apartment. Because the attribute STAThread is applied to the Main method of a WinForm class by default with a WinForms Project, the main thread of your app will run in STA mode.".也就是说有些AcrtiveX控件或者Com组件必须运行在单线程单元下(STA:Single Thread Apartment ),否则的话会抛出“Bad variant type”异常。解决方案为:新开一个线程,并将该线程的运行模式设置为STA,然后再改线程下对Com组件或者ActiveX控件进行调用。
对应到我们的事例中,如果不使用STA模式运行,我们可以连接到SAP系统,但调用Function Module的时候会抛出“Bad variant type”异常。所以要讲调用Function Module的代码在新开的线程中执行。具体步骤如下:
一,添加对Interop.SAPFunctionsOCX.dll以及Interop.SAPLogonCtrl.dll和Interop.SAPTableFactoryCtrl.dllcom组件的引用。
二,新开一个线程,并将该线程的运行模式设置为STA. 并将登录SAP系统以及调用Function module的方法运行在该线程下!代码如下:
protected void Button1_Click(object sender, EventArgs e)
{
System.Threading.Thread s = new System.Threading.Thread(new System.Threading.ThreadStart(test)); //Create a new thread and set the method test() run in this thread
s.SetApartmentState(System.Threading.ApartmentState.STA); //Set the run mode 'STA'
&
相关文档:
首页:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head ......
程序代码
public static string GetRealIP()
{
string ip;
try
{
HttpRequest request = HttpContext.Current.Request;
if (request.ServerVariables["HTTP_VIA"] != null)
{
ip = request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString().Split(',')[0].Trim();
}
else
{
ip = requ ......
<% @ Page Language = " C# " %>
<! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" >
< script runat ="server" >
System.Data.DataView Crea ......
asp.net和ajax未捕获异常处理机制
这里的异常处理主要是指开发人员在业务代码中未捕获的异常。未捕获异常处理的目的:
1:在应用程序域级别对异常类型进行处理;
2:在处理的基础上,可以将错误信息记录日志;
3:以友好的方式提示最终用 ......
cs文件:
using System.IO;
string context = "";
string path = HttpContext.Current.Server.MapPath("") + "\\test\\test.html";
System.Text.Encoding code = System.Text.Encoding.GetEncoding("utf-8");
Stre ......