问题描述
因为一些原因,必须要asp使用c#开发的dll,达到上传目的。我的代码是c#中publicintplus(intx,inty){return(x+y);}publicstringupload3(HttpRequestmyform){returnmyform.Form["aa"].ToString();}publicstringupload4(HtmlInputFileHtmCtrlObjUploadFile){returnHtmCtrlObjUploadFile.PostedFile.ContentLength.ToString();}
然后将c#类文件生成的dll注册到计算机中asp代码如下<%sett=Server.CreateObject("ClassLibrary1.Class1")a=request.QueryString("a")selectcaseacase1response.Writet.plus(2,3)'正常case2response.Writerequest.Form("aa")&"<hr>"'正常response.writet.upload3(request)'错误:MicrosoftVBScript运行时错误错误'800a01ae'类不能支持Automation操作case4response.Write(t.upload4(request("fileField")))'错误:MicrosoftVBScript运行时错误错误'800a01ae'类不能支持Automation操作endselect%><formaction="index.asp?a=4"method="post"enctype="multipart/form-data"name="form1"id="form1"><inputtype="text"name="aa"id="aa"/><inputtype="file"name="fileField"id="fileField"/><inputtype="submit"name="button"id="button"value="提交"/></form>
请问怎么做才能让c#做的dll在asp里可以达到上传的目的?必须要dll,我的想法是把表单里面文件域的值都提交给dll,然后在dll中处理上传,请问怎么做?
解决方案
解决方案二:
膜拜,牛逼啊
解决方案三:
这个够呛吧。
解决方案四:
将C#开发的DLL,在生成时勾选“对com可见“这就跟你用Server.CreateObject("FileSystemObject")一样一样的,用的都是COM组件
解决方案五:
引用3楼dongxinxi的回复:
将C#开发的DLL,在生成时勾选“对com可见“这就跟你用Server.CreateObject("FileSystemObject")一样一样的,用的都是COM组件
恩,我想知道上传的代码
解决方案六:
这跟代码没关系,要将那个dll以com组件的方式进行部署(注册)
解决方案七:
引用5楼dongxinxi的回复:
这跟代码没关系,要将那个dll以com组件的方式进行部署(注册)
已经按照com方式部署了,要不然其中的部分函数怎么可能正常使用呢,只是上传函数不好使
解决方案八:
asp中的request,不能直接传给C#中的upload3(HttpRequestmyform)但是我觉得你传byte[]或stream应该都可以,比如publicboolupload(byte[]data,stringsavePath){try{File.WriteAllBytes(data,savePath);returntrue;}catch(...){returnfalse;}}
asp里面调用data=request.BinaryRead(request.TotalBytes);t.upload(data,server.MapPath(保存文件路径));
解决方案九:
引用7楼dongxinxi的回复:
asp中的request,不能直接传给C#中的upload3(HttpRequestmyform)但是我觉得你传byte[]或stream应该都可以,比如publicboolupload(byte[]data,stringsavePath){try{File.WriteAllBytes(data,savePath);returntrue;}catch(...){returnfalse;}}asp里面调用data=request.BinaryRead(request.TotalBytes);t.upload(data,server.MapPath(保存文件路径));
试了,提示“无效的过程调用或参数”有没有别的方法呢?
解决方案十:
code已经发给你了