|
Good morning message board,
I am trying to read data from an xml string, and am getting a Object reference not set to an instance of an object. I am assuming this is because the following line of code is not finding a node in the xml string where profileURL is a string:
profileURL = xmlDoc.SelectSingleNode("fql_query_response/user/profile_url").Value;
The xml string i am trying to read is as follows:
<br />
fql_query_response xmlns="http://api.facebook.com/1.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" list="true"><br />
<user> <br />
<profile_url>http:
</user><br />
/code><br />
<br />
Any help with this would be greatly appreciated as im not really clear why i am not registering a hit on a node. <br />
<br />
Thanks for the help, <br />
<br />
JL <br />
<br />
<div class="ForumMod">modified on Tuesday, January 20, 2009 1:16 PM</div>
|
|
|
|
|
Hello all,
I have coded a quite-complex (for me) website that contains many controls and some loaded code-behind pages. I launched the website, no problems there. A few months after all files are gone in a harddisk crash. Now I have a fully functioning ASP.NET website at hosting company's computer, but no code behind files... As long as website works, noo problem I thought, I can work on it "someday" in the future. But now hosting company changed their configuration and one of the user controls that contained hard-coded directory path does not work anymore (oh yes I know I shouldn't have hardcoded and instead used settings files... But "it" happens)... I really don't have time to code all that stuff and code behind pages contained many SEO tweaks, I don't think I can get them all right in one go (last time it took mo more than 2 months to get it almost-right).
I have temporarily solved the situation by removing the problematic user control. Now website works but that spot looks kinda empty and in a week or so I have to put there something and I don't really feel like coding the entire code behind pages. It took me 2 months to get together this babe...
My question is this: Is there an easier way around? For instance, can't I just write a single replacement user control and have it compiled? When I tried it (on VS 2005) it tells me the website is already pre-built and refuses to build/publish the website. When I wrote a simple user control, inserted in site.master and clicked on Preview I can see it's working, but I can't publish/build. So I figure there should be a way...
Any recommendations please? (P.S. I am a newbie and I am not a professional programmer; please take it easy on me )
Thanks,
Haluk
|
|
|
|
|
Oh another thing, I don't want to put static HTML there. I want to put another user control that prints a random list of keywords (tag cloud) from a wide list of keywords... So static HTML is not the option.
|
|
|
|
|
I think your best bet is to download a copy of Reflector[^] (don't worry, it's free) and use this to disassemble the DLLs in the website. You can then recreate the project (though it might be a bit of a slow process).
It definitely isn't definatley
|
|
|
|
|
Thank you really. It seems a good solution in the long run (i.e. for recovering the entire website). But I still need a quick and dirty solution for adding a new user control to my published website...
|
|
|
|
|
You're effectively talking about making changes to a compiled piece of code which leaves you with two options:
1. Recreate the project as described above; edit, rebuild & deploy.
2. Disassemble the DLL using ildasm.exe (prob found in c:\program files\visual studio 8\sdk\v2.0\bin) to get the IL code, amend this code by hand (if you're just changing hard coded references this might not be too difficult) and then use ilasm.exe to reassemble the DLL which you can then redeploy.
Given that you say you're not an experienced developer, I'd recommend that you invest a couple of hours in the first solution; the second is quick and dirty but it definitely isn't trivial.
It definitely isn't definatley
|
|
|
|
|
I checked ildasm already. It looked rather complicated and its been a few months since I coded this. So I guess I'll go with Refractor. Thank you for your time and valuable help. Kind Regards, Haluk
|
|
|
|
|
I came back to thank you. Thanks to Reflector I recovered all the code from binaries and rebuilt the website in just 5 hours Thanks for pointing me to right direction. You saved me a lot of time. All the best.
|
|
|
|
|
If I have a file that I assume is text, is there a process that can verify if its binary or not and to ensure it contains valid characters.
|
|
|
|
|
What do you mean 'is binary'? everything is stored in binary remember.
Do you mean that its a file containing only the characters '1' and/or '0'?
If so do you just want to check if the file contains only those 2 characters?
|
|
|
|
|
I think he means an executable, but that was my assumption, I may be stupid.
|
|
|
|
|
No time to wait for replies lol. If you want some code that works for my understanding of your question then read on. otherwise, if i misunderstood your needs ignore the rest. but it may help others who pull up your post.
System.IO.StreamReader sr = new System.IO.StreamReader("C:\\TargetFile.txt");
int b = sr.BaseStream.ReadByte();
while(b != -1)
{
char c = (char)b;
if(c != '0' && c != '1')
b = sr.BaseStream.ReadByte();
}
sr.Close();
Of course you could just test the byte against ASCII equivalent without char conversion
And remember you may need to handler other characters such as 'new lines' etc.
|
|
|
|
|
Loop through and check for non printable characters?
Simplest and easiest way; check file extension? If someone renames a .exe to a .txt, checking for non printing characters in the file would be your easiest way. Another simple safeguard is checking filesize and restricting large files.
|
|
|
|
|
Thats basically what I need to do. Make sure that the file the user is uploading is not a renamed file, too big etc or especially not a script. I was hoping there would be some .Net functionality to determine a file type.
So I'll read it into a stream and check for ascii unless I hear there is another way.
|
|
|
|
|
FileInfo Class[^] can get you some generic info, but you'll probably have to go deeper then that.
|
|
|
|
|
you would need to identify the file headers for that kind of thing, which are different for each filetype so not an easy task
|
|
|
|
|
Perhaps you should look for what you don't accept.
There are a lot of file types that contain plain text, so if someone renames one of those you could not determine that by just checking if the file contains text. This includes script files, so to detect one of those you would have to look what's in the text.
A lot of binary file formats have some identifying bytes at the beginning, you could check for some of the common ones.
Despite everything, the person most likely to be fooling you next is yourself.
|
|
|
|
|
Hi,
This is what I do when I need to open a file that may or may not be text, and my app can show either text or a hex dump:
- read its first 1K bytes (less if smaller);
- check first 4 bytes for any of the Unicode/UTF8 markers; if found, it is assumed to be text; if not:
- assume it is code page 1252 and calculate the percentage of printable characters;
that would be anything in [0x20,0x7E] and then some. If percentage sufficiently high, I open
as text. Doing so allows for the odd strange character, transmission error, whatever.
All the above is binary operations, there is no string, no char and no Encoding class involved.
BTW: I call the above recognizing a text file, it does not validate anything.
|
|
|
|
|
Luc, thanks. That sounds promising. Would you be able to provide some code for and example
Dale
|
|
|
|
|
Hi,
I don't do examples normally, I'll make an exception this once, without warranties, without
service, this is old code, to be taken as is; I use it on a daily basis though.
Class LP_File will not be provided, as far as this method is involved
it just encapsulates simple File methods.
public static bool IsPrintableFile(string filename, byte[] accept, out long nonPrintables) {
bool printable=true;
bool firstRead=true;
long chars=0;
int logged=0;
nonPrintables=0;
if (accept==null) accept=new byte[0];
using (LP_File f=new LP_File(filename)) {
try {
f.OpenBinaryReader();
byte[] buffer=new byte[512];
for ( ; ; ) {
int len=f.ReadBinary(buffer);
if (len<=0) break;
if (firstRead) {
firstRead=false;
if (len>=2) {
byte c0=buffer[0];
byte c1=buffer[1];
if (c0==0xFF && c1==0xFE) return true;
if (c0==0xFE && c1==0xFF) return true;
if (len>=3) {
byte c2=buffer[2];
if (c0==0xEF && c1==0xBB && c2==0xBF) return true;
}
}
}
for (int j=0 ; j< len ; j++) {
byte c=buffer[j];
chars++;
if (c>=0x20 && c<=0x7F) continue;
if (c=='\t' || c==0x0A || c==0x0D) continue;
bool acceptable=false;
for (int i=0 ; i< accept.Length ; i++) {
if (c==accept[i]) acceptable=true;
}
if (!acceptable) {
logged++;
if (logged<20) {
int i=(int)c;
Console.WriteLine("Bad character ("+i.ToString("X2")+
") in "+filename);
}
nonPrintables++;
}
}
}
f.CloseBinaryReader();
if (logged!=0) Console.WriteLine(logged+" bad chars");
} catch (Exception exc) {
env.error("IO error on "+filename+": "+exc);
}
}
if (nonPrintables>(chars/64)) printable=false;
return printable;
}
I wish tabs were less than 8 positions on CP!
Nowadays I probably would add a few more printable chars such as copyright, euro, and
e with some accents.
|
|
|
|
|
Nice Snippet, Going to insert it into my archives for referencing
|
|
|
|
|
Try indenting with SPACEs.
|
|
|
|
|
PIEBALDconsult wrote: Try indenting with SPACEs
Nooo way. All those spaces would take too much space on disk as you recently admitted yourself.
|
|
|
|
|
But it's Chris' disk, not yours.
|
|
|
|
|
I would like to update the field of a database with the maximum value + 1. The following code doesn't compile because I get an error, so I must be doing something wrong.
//@Task_ref = MAX(Task_ref from database) + 1
string _getMaxTaskRef = @"SELECT MAX([task_ref])
FROM [teamwiki].[dbo].[task]";
SqlCommand cmdGetMaxTaskRef = new SqlCommand(_getMaxTaskRef, conAppDB);
cmdGetMaxTaskRef.ExecuteScalar();
if (_getMaxTaskRef != null)
{
SqlDbType.BigInt _nextRef = (SqlDbType.BigInt) _getMaxTaskRef.
+ 1;
Error:
Error 1 'System.Data.SqlDbType.BigInt' is a 'field' but is used like a 'type' c:\inetpub\wwwroot\TaskEntry\TaskEntry.aspx.cs 100 31 http://localhost/TaskEntry/
Jon
|
|
|
|