.net - Create A Child Process?
Jan 31, 2010You can create a thread given a delegate to method, can I create a process in the same way? I want to do that to be able to close the child process from task manger if something goes wrong.
View 2 RepliesYou can create a thread given a delegate to method, can I create a process in the same way? I want to do that to be able to close the child process from task manger if something goes wrong.
View 2 RepliesI started creating a new website in Visual Studio 2008 and in my site, there are two pages such that clicking treenode on parent page will take the user to second page. But when i execute my project and then stop the debugging from IDE, the child window is not getting closed. I am not sure where i am missing.
View 1 RepliesI need to create a process of merging letters and/or envelope templates from a web app. We are using VS2010, C# (.net 4.0), asp.net, and Office 2007. The user selects a bunch of accounts from a list, and I need to collect the info for those accounts for merge. One catch is that if I look up an account and one of the two account holders has passed away, I need to change the greeting based on that info. For example, in most cases the letter would say something like Mr. and Mrs. Bob Smith. But if bob is dead, then it would just say Mrs. Mary Smith.
I also need it to open on the client side in word ready to print. So if the letter is 1 page, and the user selects 100 accounts, the word doc should have the letter merged with the 100 accounts just waiting for print. What is the best way to do this?
I'm updating an old process that already exists, which works as follows:
The user submits a form which runs the following asp (simplified, names changed):
<%
set rb = Server.CreateObject("RecordBuilder.SomeObject")
rb.Calculate()
rb.StartProcess()
%>
The RecordBuilder.SomeObject was an old VB6 DLL, I don't have VB6, so I converted it to VB.NeT 4.0
The call to Calculate() works as expected, the call to StartProcess() fails.
StartProcess() is the following:
Public Function StartProcess()
Try
strProcess = "Starting process"
Dim proc = New Process()
proc.StartInfo.RedirectStandardOutput = True
proc.StartInfo.UseShellExecute = False
proc.StartInfo.CreateNoWindow = True
proc.StartInfo.FileName = "d:AppRecordProcessor.exe"
Dim procHandle = proc.Start()
strProcess = "Started process"
Catch ex As Exception
Err.Raise(vbObjectError + 9999, "RecordBuilder.SomeObject", strProcess & " failed: " & ex.Message & "<hr />Stack Trace:<br />" & ex.StackTrace)
End Try
End Function
This fails with the call to proc.Start(), however if I copy the test ASP to a .vbs file it will work as expected.
I have changed the permissions on d:AppRecordProcessor.exe to grant execute permission to the group Everyone.
We are working on a SharePoint Site where we have created lot of webparts. Now so far we have been creating SitePages for these webparts manually and adding webparts to those. It takes lot of time in any environment and its difficult to move from environment to environment.What is the ideal way of doing it? How can we automate sitePage creation process and hopefully add webpart to it by some scripts?
View 1 RepliesI want to create child links for a link without using sitemap.
For example: i have four links "Home" "About Us" "Contact Us" "Products".
I generate these links from my sitemap. Here is my site map code:
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
<siteMapNode>
<siteMapNode url="default.aspx" title="Home" description="" />
<siteMapNode url="aboutus.aspx" title="About Us" description="" />
<siteMapNode url="contactus.aspx" title="Contact Us" description="" />
<siteMapNode url="products.aspx" title="Products" description="" />
</siteMapNode>
</siteMap>
I add two more pages test1.aspx and test2.aspx. Now I want:
- These two links are children of "About Us".
- When I click test1.apx or test2.aspx the "About Us" title will be highlighted.
- I tried add child node to "<siteMapNode url="aboutus.aspx" title="About Us" description="" />"
and it work fine. However, my boss doesn't want me to use this one.
I've been required to create an entry form to capture details relating to a travel booking. A user should be able to make a booking entering details related to the booking specifically the details of the persons that would be making the trip. This would involve a sort of parent-children relationship between the booking and the persons.
This would be relatively easy for me to achieve using web forms but then how can I easily achieve this is MVC using a single view? Do I have to create a sort of multistep form?
I am a newbie at .NET technology and I would need to make exactly same thing like at this tutorial : http://msdn.microsoft.com/en-us/magazine/cc164077.aspx#S1I don't need to edit button or delete button there, just expand and collapse rows of child table. I was wondering if there is not some more simpler way how to do this because the article is from 2003 and I don't understand it so much. And when I looked around this solution I found some SilverLight solutions but I can't use them.
View 5 RepliesI want to create a menu similar to the following site
[URL]
I've written a aspx.net(C#) page that after the user has done what they do on the page they hit a Submit button. The Submit button
1) takes the work the users was producing on the page and writes it to a file.
2) attempts to execute a batch file.
The call to the batch file is executed via:
protected void Execute123EDI()
{
try
{
string File = @"c:80sAdminSendV80s.bat";
lblCancelled.Text = lblCancelled.Text + File;
Process proc = new System.Diagnostics.Process();
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.LoadUserProfile = false;
proc.StartInfo.UserName = "administrator";
proc.StartInfo.RedirectStandardOutput = true;
System.Security.SecureString secPass = new System.Security.SecureString();
string paswd = "123abc";
for (int i = 0; i < paswd.Length; i++)
{
secPass.AppendChar(paswd[i]);
}
proc.StartInfo.Password = secPass;
proc.StartInfo.FileName = File;
proc.Start();
FileStream fs = new FileStream(@"c:80sAdminSendV80sOutput.log", FileMode.Append);
StreamWriter sw = new StreamWriter(fs);
sw.Write(proc.StandardOutput.ReadToEnd());
proc.WaitForExit();
sw.Close();
proc.Close();
}
catch(Exception ex)
{
lblDebug.Text = lblDebug.Text + ex.Message + "<br/>";
}
If I watch the processes tab in Task Manager on the web server I see "cmd.exe" under the context of 'administrator' but it just hangs. For test purposes c:SendV80s.bat: copy c: oot.ini c:zzz.txt
If I logon onto the webserver's console and execute SendV80s.bat it works and exits without issue. But when I execute the same batch file via the Submit button it gets stuck executing in Task Manager/Process. I believe this has something to do with the fact that cmd is not running in a full environment/desktop context. I just noticed this on the actual console of the webserver (not in my RDP console but console 0 instead)
A pop-up box stating: CMD.exe Application error The application failed to initialize properly (0xc0000142). Click OK to terminate the application. And when I click on the OK button my ASPX page's WaitForExit is satisfied and the continues processing normally.
I know that similar questions have been asked all over the place, but I'm having trouble finding one that relates directly to what I'm after.
I have a website where a user uploads a data file, then that file is transformed and imported into SQL. The file could be up to 50mb in size, and some times this process can take 30 minutes or sometimes even longer.
I realise I need to palm off the actual work to another process, and poll that process on the web page. I'm wondering what the best approach would be though? Being a web developer by trade, I'm finding all this new Windows Service stuff a bit confusing, and I just wanted somewhere to start.
So:
Can I do / should I being doing this with a windows service? if so, how?
Should I use WCF? If this runs under IIS, will I have problems with aspnet_wp.exe recycling and timing out my process?
clarifications
The data is imported into sql, there's no file distribution taking place.
If there is a failure, it absolutely MUST be reported to the user. The web page will poll every, lets say, 5 seconds, from the time the async task begins, to get the 'status' of the import. Once it's finished another response will tell the page to stop polling for status updates.
queries on final decision
ok, so as I thought, it seems that a windows service is the best idea. So as to HOW to get it to work, it seems the 'put the file there and wait for the service to pick it up' idea is the generally accepted way, is there a way I can start a process run by the service, without it having to constantly be checking a database table / folder? As I said earlier, I don't have any experience with Windows Services - I wondered if I put a public method in the service, can I call it somehow?
I'm working on an ASP.net app I'm trying to execute a process remotely , using System.Diagnostics.Process class here's my code:
ProcessStartInfo startInfo = new ProcessStartInfo(@"C:TestCommand.exe");
startInfo.Domain = "myDomain";
startInfo.UserName = "MyUserName";
SecureString sec = new SecureString();
foreach (char item in "MyPassword")
{
sec.AppendChar(item);
}
sec.MakeReadOnly();
startInfo.Password = sec;
startInfo.UseShellExecute = false;
Process.Start(startInfo);
I keep receiving an exception with the message "Logon failure: unknown user name or bad password". Im absolutelly sure that i'm submiting my correct username/pwd
I've developed a popup email .aspx used on our intranet based web app that is auto generated with .pdf's attached. I'm developing with VS 2008 ASP.Net 3.5 C# and System.Net.Mail.MailMessage. I can create and send the email with no issues. The problem is with any attempt to open or delete the attachments I get the above error. The .pdf's a copied with the following code:
FileStream fsr = new FileStream(inFilename, FileMode.Open, FileAccess.Read, FileShare.Read);
BinaryReader reader = new BinaryReader(fsr);
byte[] bytes = new byte[fsr.Length];
reader.Read(bytes, 0, bytes.Length);
FileStream fsw = new FileStream(outFileName, FileMode.Create, FileAccess.Write, FileShare.Write);
BinaryWriter writer = new BinaryWriter(fsw);
writer.Write(bytes, 0, bytes.Length);
// clean up
writer.Flush();
writer.Close();
writer = null;
fsw.Close();
fsw.Dispose();
fsw = null;
reader.Close();
reader = null;
fsr.Close();
fsr.Dispose();
fsr = null;
Later after sending the email I:
mailMessage.Dispose();
mailMessage = null;
foreach (string fileName in attachments)
{
if (File.Exists(fileName))
File.Delete(fileName);
}
The error occurs at: the File.Delete(fileName);
how I can delete or reopen these files after sending the email?
Dear ladies and sirs.
I have a .NET infra code running both within the IIS worker process and within a desktop client app. How can the .NET code determine whether it is running within an IIS worker process?
I know that I could check the name of the process (w3wp.exe, for instance), but I would like a more robust approach. I wish to make a side note. This is not a production need. I need this information to enable certain scenarios useful during the development and testing phase. Specifically to ease the testing of secure vs non secure configurations.
When I hit the run button (in my Default.aspx), a process starts (this process contacts a webservice to get some files, etc). How do I: Ensure that only a single process is running at a time (i.e. if I refresh the browser, I don't want to start the process a second time)Track progress - there are 4 points of the process (at 25%, 50%, 75%, 100%) that I want to track, and when each part completes, I want to update the progress bar. I have a status object for the running process, but the question is how to update the progress bar automatically? Do I need to use threads to achieve the above two?
View 1 RepliesMy code is that I want to create a log file and log it upon a new user browsing the site. However, what i did was I put in a 6 second delay and then used another browser to access the page. And it threw an Exception saying it is being used by another process which is true. So how come I set it so that, if IT is being used by another process, WAIT and retry every 500 milliseconds until it becomes free/available?
here's the code:
protected void Page_Load(object sender, EventArgs e)
{if (!IsPostBack) // if this is the first time page loads, set k to 1
{ lognewuser();
}}
[Code]....
I am having the text file which is used to track all the ip address which is available in the network and replace the content from"Reply from 172.29.116.3: bytes=32 time=1ms TTL=255" to 172.29.116.3.
For this task i am having 2 functions 1.runCMD() Function is used to create a file which ping all the ip address between 3 to 254 ("Reply from 172.29.116.3: bytes=32 time=1ms TTL=255").
2.Another function textFileReplace() which is used to replace the text from "Reply from 172.29.116.3: bytes=32 time=1ms TTL=255" to 172.29.116.3.
This process will continue every 30 minutes..
But i am having the error while accessing the function textFileReplace() as The process cannot access the file 'C:inetpub' because it is being used by another process.
I have created a User Control with 2 Textboxes and a Button. Then I have built that control into my Master Page. I have also created the code easily enough for the login - see below;
[Code]....
However, I have a problem. I want to do the following;
1. Let them Login
2. Let them Logout
3. And I want to try and use this code into a Global Variable
What is the easiest way possible to do this, as I do NOT want to use the Asp.Net Login facilities already provided.
I have a stored procedure which fetches data after joining 8-9 tables and inserts that into a temp table. It was running fine till now, but now when the amount of data fetched have exceeded 20000, the SP is breaking. I have debugged the sp and found that this main query is failing after returning arround 15000-16000 records.
The error message says Transaction (Process ID) was deadlocked on lock resources with another process and has been chosen as the deadlock victim. Rerun the transaction. I know what is deadlock, but when i checked with SP_LOCK stored proc i only found that my process is running on database only. So how is this getting deadlocked when there are no other processes running simultaneously on server.
When I delete all files from the directory path. then it will give me this error The process cannot access the file because it is being used by another process. How to solve this?
View 10 RepliesI have an asp.net website and I allready did .Dispose() here is my code below;
try
{
MailMessage newMail = new MailMessage(MailFrom, MailTo,
MailSubject, MailMsg);
if (MailAttachment != "")
{
Attachment data = new Attachment(MailAttachment,
MediaTypeNames.Application.Octet);
newMail.Attachments.Add(data);
}
newMail.BodyEncoding = System.Text.Encoding.UTF8;
newMail.IsBodyHtml = true;
SmtpClient client = new SmtpClient("192.168.2.205");
client.Credentials = CredentialCache.DefaultNetworkCredentials;
client.Send(newMail);
newMail.Attachments.Dispose();
newMail.Dispose();
DeleteAttachment(MailAttachment);
lblSuccess.Text = "Başvurunuz alınmıştır teşekkürler.";
lblSuccess.Visible = true;
ClearForm();
}
catch (Exception ex)
{
lblSuccess.Text = ex.Message;
//lblSuccess.Text = "Bir sorun oluştu bir daha deneyiniz.";
lblSuccess.Visible = true;
}
But i' m getting the same error, it' s running fine in my localhost but in server i' m getting this error. How can i fix it?
I am getting binary data from a SQL Server database field and am creating a document locally in a directory my application has permissions. However I am still getting the error specified in the title. I have tried numerous suggestions posted on the web including those suggested in previous posts on Stackoverflow. I have also used ProcessExplorer > Find Handle to locate the lock and it returns nothing as if the file is not locked.
I am using the code below to save the file to the file system and I then try to copy this file to a new location later in the application process within another method. It is this copy method that takes the path of the newly created file that throws the exception.
The file itself is created with its content and i can open it through Windows Explorer without any problems.
Am I missing something completely obvious? Am I creating the file correctly from the database?
// Get file from DB
FileStream fs = new FileStream(
"C:myTempDirectorymyFile.doc", FileMode.OpenOrCreate, FileAccess.Write);
BinaryWriter br = new BinaryWriter(fs);
br.Write("BinaryDataFromDB");
fs.Flush();
fs.Close();
fs.Dispose();
// Copy file
File.Copy(sourceFileName, destinationFilename, true);
Iam getting the above said error while Iam copying a file of relativelly Heavy say 130 MB.Below is the code which is giving the error.
System.IO.FileInfo FileInfo1 = new System.IO.FileInfo(filename1);
FileInfo1.CopyTo(strDestPath,true);
I am using a AsyncUpload(telerik), i am in a point where i am supposed to save the File to a certain Folder. First I check if the directory exist
Code:
Dim baseDire As String = Server.MapPath("~/MyFILES/")
If IO.Directory.Exists(baseDire & Request("Req_ID").ToString()) = False Then
IO.Directory.CreateDirectory(baseDire & Request("Req_ID").ToString())
End If
Because i am doing multiple Upload , i will have to loop through the items of the Upload control and save to a folder.
Code:
For Each file As UploadedFile In UploadPropDoc.UploadedFiles
Dim bytes(file.ContentLength - 1) As Byte
file.InputStream.Read(bytes, 0, file.ContentLength)
'Save the File to the disk
file.SaveAs(baseDire + file.GetName())
Next
Now when ever i debug this , when it comes to this line
Code:
file.SaveAs(baseDire + file.GetName())
I get an Error
The process cannot access the file because it is being used by another process.
I have removed the Readonly in the Folder that it supposed to write to and gave everyone permission , but still the error persist.
I have a web application that uses the master/child page layout you get by default (at least in a VS2010 web project). The Masterpage has a NavigationMenu, each item on that NavigationMenu has a NavigateUrl that looks like "~/Pages/MyPage.aspx". This automatically opens 'MyPage' in the Content of the Masterpage, so that the master page with menu and header etc stays visible.
Now, the client has a guestbook on her old website (I'm basically rebuilding her website, adding the ability for her to upload new content in her browser), and she wants to keep it. This guestbook is from a 'free guestbook' third party website, over which I have no control. It's simply a website in the form [URL] .... which shows the guestbook for a user 'Username'.
In her old website, I was using frames, so the menu on the left side was in a different frame, and I would simply open the third party website in the center frame. That would create the illusion that the guestbook was on her site, while it was actually a completely different website in a separate frame.
In my new website I'm no longer using frames, but the master/child layout as explained. Is it still possible to 'host' or 'embed' this third party website as a 'child' of the master page?
I tried just putting the url to the guestbook in the NavigateUrl of a NavigationMenu item, but that doesn't work, it just navigates to the third party website and doesn't embed it in any way.