|
Hello everyone!
I hope that I won´t be kicked out for asking the same question again and again until I get it to work. But here goes:
I´m developing a managed C++-web Service and my problem
occured months ago when I tried to pass binary files as dataset
between the client and the service. I then got the advice to
use DIME and recently downloaded WSE 1.0 SP1.
I read an example in C# and tried to convert the code to
c++. But it don´t get it to work.
C#
DimeAttachment attachment = new DimeAttachment("application/octet-stream",
TypeFormatEnum.MediaType, ms);
HttpSoapContext.ResponseContext.Attachments.Clear();
HttpSoapContext.ResponseContext.Attachments.Add(attachment);
C++ (I´ve tried this, and similar)
DimeAttachment* attachment;
attachment = new DimeAttachment("application/octet-stream", TypeFormatEnum::MediaType, ms);
HttpSoapContext* hsc;
hsc->get_ResponseContext()->get_Attachments()->Clear();
hsc->ResponseContext->Attachments->Add(attachment);
This will compile, but when I run I get the error
"Object not set to an instance.." on the ...->Clear(); row.
If I then try to instance the object;
HttpSoapContext* phsc = new HttpSoapContext();
or
SoapContext* sc = new SoapContext();
i get the error C2512 "no deafult constructor" when I compile.
What can be wrong? Are there som arguments missing;
Intellisense doesn´t detect any. Are there some error in
the config-files?
With the very highest regards
PS*************************************************
Well actually, I also can´t get a C#-version to function.
I downloaded Roman Kiss-example
"Using WSE-DIME for Remoting over Internet"
http://www.codeproject.com/cs/webservices/remotingdime.asp
...allthough I did everything according to the book I kept on getting
the error .FileLoadException "The assembly manifest definition [name]
does not match the assembly reference".
DS**************************************************;);)
Daniel
|
|
|
|
|
Instead of
adaoja wrote:
HttpSoapContext* hsc;
hsc->get_ResponseContext()->get_Attachments()->Clear();
put
<br />
HttpSoapContext::get_ResponseContext()->get_Attachments()->Clear();<br />
|
|
|
|
|
Thank you Nemanja
But, the problem is (as i wrote previously) not really that codesnippet but why I can´t make an instance of the HttpSoapContext-object. And why do I have to? In C# there is no need for a
HttpSoapContext variable = new HttpSoapContext();
statement.
If I use your codesnippet it works for the compiler but not when I run the project (much like when I use pointers like above). I get the error "Object not set to an instance..."
and if I try to make an instance the compiler complains with C2512 "No deafult constructor available".
This is what confuses me.
With the highest regards
Daniel
|
|
|
|
|
You don't need to make an instance. get_ResponseContext() is a static method.
adaoja wrote:
If I use your codesnippet it works for the compiler but not when I run the project (much like when I use pointers like above). I get the error "Object not set to an instance..."
Would you show me exactly what code did you try to compile and what is the error you get?
|
|
|
|
|
If you take a look at This MSDN article[^], you'll see that
HttpSoapContext<br /> is a "utility" class that contain only two static members. You can't instantiate objects of that class.
|
|
|
|
|
Hi Nemanja
I do understand that, but why can´t I run the program? Why do I at that line get a "Object not set to an instance" - error. It doesn´t make any sense to me.
With the highest regards
// Daniel
|
|
|
|
|
Maybe get_ResponseContext() or get_Attachments() return null. Why don't you break this big line and check for null?
|
|
|
|
|
woops!
That is true, they both return null.
Now I´m even more lost.
With the highest regards
// Daniel
|
|
|
|
|
I guess you need to put a complete codes for ppl to study your problem. It could be just some typos or small problem.
Like namespace stuff or anything. Having too short of explanation of your problem will only return less understandable answer. (i learn this from someone in codeproject)
Sonork 100.41263:Anthony_Yio
|
|
|
|
|
Sure sir.
I´m using WSE 1.0 SP1 on Microsoft.NET framework 1.0
I have installed WSE 2.0, but I don´t get it to work.
Here goes.
//Create a new DimeAttachment class
CString m_sFilepath = Server->MapPath("/.../.../");
CString m_sFilename(inFileName) ; // an incomming string
FileStream *fs;
try
{
fs = new FileStream(m_sFilepath + m_sFilename,FileMode::Open,FileAccess::Read);
//copy stream to stream
unsigned char sbuf __gc[];
sbuf = new unsigned char __gc[fs->Length];
fs->Read(sbuf, 0, sbuf.Length);
MemoryStream *ms;
ms = new MemoryStream();
//close file
fs->Close();
//attach body
DimeAttachment* da;
da = new DimeAttachment("application/octet-stream", TypeFormatEnum::MediaType, ms);
HttpSoapContext *hsc;
hsc->get_ResponseContext()->get_Attachments()->Clear();
hsc->get_ResponseContext()->get_Attachments()->Add(da);
}
I can compile it but not run it, due to "Object not set to an instance"
HttpSoapContext->ResponseContext->Attachments->Clear();
HttpSoapContext->ResponseContext->Attachments->Add(attachment);
The above doesn´t work either. "Left of -> must point on a class/struct/union/"
I have had the thread in ExpertsExchange
http://www.experts-exchange.com/Programming/Programming_Languages/Dot_Net/Q_20714751.html#9208316
With the highest regards
// Daniel
|
|
|
|
|
Could you divide your code so that it is like this
SoapContext* sc = HttpSoapContext::ResponseContext;
and then make sure your call is within [Web Method] function scope.
Check out Consuming web service from Managed C++[^]
Sonork 100.41263:Anthony_Yio
|
|
|
|
|
Thank you sir
... but this is old news, I have tried the diffenent codesnippets back and forth and now the problem isn´t the code. It is the WSE and DIME, and why I can´t make that work. I have uninstalled the WSE and reinstalled it (WSE 2.0) and still it points on WSE 1.0, I get an errormessage when I run it in the Fusion Log
"File or assembly name Mirosoft.Web.Services or one of its dependencies, was not found."
Do I need to make any changes in a config-file? I have tried changes in both web.config and machine.config, but I can´t get it to work.
With the highest regards
// Daniel
|
|
|
|
|
there are variety of static utility object in C# or C++.NET which you do not need to instantiate and to be used immediately. It is call static object.
For example.
//In Managed C++. It is call this way
String *myString = System::Environment::CurrentDirectory;
//In C#. It is call this way. Syntaxes are slightly different but objective
//are the same which to the current working directory for your app.
string myString = System.Environment.CurrentDirectory;
You do not need to call
System.Environment.CurrentDirectory = new System.Environment.CurrentDirectory();
It is a static object.
Like in MFC 6.0, CDialog::OnOK();
Sonork 100.41263:Anthony_Yio
|
|
|
|
|
Thank you sir
I do understand that and when I don´t instantiate the object HttpSoapContext the compiler doesn´t complain.
The proble occurs when I try to run/debug the program. Then I get the response "Object not set to an ..."
This I found very strange? Is there a bug somewhere? Do I need to make any other adjustment?
With the highest regards
// Daniel
|
|
|
|
|
It could be the object is NULL or you did not call new.
In managed world. Everything needs to be called new youClass().
There is no old object in managed world. (this line is a joke)
Sonork 100.41263:Anthony_Yio
|
|
|
|
|
Thank you sir
As I wrote before, the object is NULL, not very good. But what do I do? Remember that I´m a newbie.
With the highest regards
Daniel
|
|
|
|
|
I maybe out of sync on this one, but shouldn't you be using S prefix in String declaration? I mean:
attachment = new DimeAttachment(S"application/octet-stream", TypeFormatEnum::MediaType, ms);
"...Ability to type is not enough to become a Programmer. Unless you type in VB. But then again you have to type really fast..."
Me
|
|
|
|
|
I have been tasked with writing an HTTP reverse proxy to run under IIS to re-route HTTP requests to other IIS servers based on some URI mapping rules and addding some message authentication codes (HMACs) to the request for security.
I have been considering writing this component in managed C++. I have created a prototype ISAPI filter in managed C++ and it seems to work OK.
My questions are:
- Does anybody have any experience doing this?
- Are there any bad interactions of running the CLR in IIS's process space?
- Should I go down the unmanaged C++ route? I have had good experience with this before, but I like being able to take advantage of all the classes in the .NET Framwork and not having to deal with MSXML, CryptoAPI, WinHTTP, etc.
- Right now we are using IIS 5.X and we'll probably upgrade to IIS 6 in the next 9 months, is there anything I need to consider for IIS6>
Thanks
Martin
|
|
|
|
|
martinbertolino wrote:
I like being able to take advantage of all the classes in the .NET Framwork and not having to deal with MSXML, CryptoAPI, WinHTTP, etc.
Have you looked at ATL Server classes? Everything you want in unmanaged C++.
|
|
|
|
|
Yes, I have looked at them briefly and they seem reasonable.
The only thing I did not complete liked was the fact that for a lot of the wrapper classes the HRESULT still has to be checked after method invocation and this opened up the possibility of missing some error checking and having the error go undetected.
The thing that I liked about the .NET Framework classes is that all errors are reported through exceptions.
Not a huge deal though.
Thanks for the response.
Martin
|
|
|
|
|
I've been looking for the way to get system BIOS information similar to the manner in which msinfo32 works so that I can store the value in a variable for a BIOS Update Utility that I'm writing.
So far I haven't been able to find much on the subject. Can anyone help?
|
|
|
|
|
|
Can you tell me how to read/write the BIOS
I have taken up a project about cmos
Thank you in advance
|
|
|
|
|
|
Hi Dears
I want to develop a MS Word Addin. The main functionality of this addin is:
--> I have to convert a MS Word file (.doc) into (.pdf) file format.
What should I take as first step to implement this functionality.
Kindly guide/help me in the form of some code/link.
I'll be grateful to you.
Kind Regards
Atif
Watch Your Thoughts for they will become your actions.
Watch Your Actions for they will become your habits.
Watch Your Habits for they will become your beliefs.
Watch Your Beliefs for they will determine your destiny.
|
|
|
|