Showing posts with label document. Show all posts
Showing posts with label document. Show all posts

Thursday, March 29, 2012

Office 2007 documents to database, dynamically generate on demand

Hello, I am currently adding some document management functionality to a .Net 2.0 Web app (VB) where I take a file in, save the file to a SQL 2000 database (image datatype), and then allow users to browse and download these files.

This works great for most files my users use -- with the exception of Office 2k7 files

I am able to upload a file, read the file into a binary array and insert into a new record in the database.

However, when I retrieve the binary array and attempt to output the file, there is a problem.

The user is prompted to open or save the file per-usual, however when Word 2007 tries to open the file, there is an error message that says:

"The Office Open XML file Test.docx cannot be opened because there are problems with the contents"

Under "Details" it says:

"The file is corrupt and cannot be opened"

If I click "OK", I am asked whether I want to have Word recover the contents of the document.

If I click "Yes" my document opens and all of the original content is there.

I have been doing some reading, and I know that the new Office 2007 files are really .zip files with XML files that contain formatting and content information.

What I would like to know is, is there a reason why I can't save these files to the database as I have been, and if so, is there a "right" way to do this?

Hi,

Based on my understanding, the users upload the word 2007 files into database and download them with your asp.net application. When you try to open the file that is downloaded, you get the error message above. If I have misunderstood you, please feel free to let me know.

To better understand your issue, could you please confirm the following information:

When we write the file to the client, we should make sure that file doesn't contain HTML-tag. We can add Response.End() right after writing and stop further processing of the ASP.NET page. For more information, seehttp://blog.benday.com/archive/2005/08/09/2705.aspx.


Yes, you have summarized what I am doing correctly.

I have been looking into this in more detail, and after using Hex Workshop, I compared the original file and the streamed file. The streamed file contained 1 extra byte.

I reviewed my code and found that the size of the file in the database was the same as the original, so I reviewed my code in the download.aspx code-behind (the file that streams the requested document).

I had read about this earlier, so I knew not to have any HTML in the aspx.

However, it seems that the Content-Length of the file is zero-based, so when I was setting Content-Length to equal the value I had in the database, an extra byte was being added.

When I set Content-Length to equal the size of the file (in bytes) - 1, I no longer received the error.

Ex:

Dim File As New EO.Library.File(CInt(Request("file")))
Dim _BinaryLength = (CInt(File.Binary.Length) - 1)

Response.Clear()
Response.Buffer = True
Response.AddHeader("Content-Disposition", "attachment;filename=" & File.Name)
Response.AddHeader("Content-Length", CInt(_BinaryLength))
Response.ContentType = File.ContentType
Response.BinaryWrite(File.Binary)
Response.End()

office automation securiy error

Hi. While trying to create a a word document in one of my asp.net pages I
keep getting an ASP.NET permission error. first I thought it was been caused
while trying to save the document, and I added permissions for the ASP.NET
account to my folders. after that I realized that the error was being
launche at the very first line of my function:
Word.ApplicationClass WordApp = new Word.ApplicationClass();
any ideas on how to solve this?
Thanks a lot,
Alejandro.For those who need the answer visit this link:
http://www.codeproject.com/aspnet/w...9372#xx999372xx
"Alejandro Penate-Diaz" <alexware69@.hotmail.com> wrote in message
news:%239TUIGSOFHA.1476@.TK2MSFTNGP09.phx.gbl...
> Hi. While trying to create a a word document in one of my asp.net pages I
> keep getting an ASP.NET permission error. first I thought it was been
> caused while trying to save the document, and I added permissions for the
> ASP.NET account to my folders. after that I realized that the error was
> being launche at the very first line of my function:
> Word.ApplicationClass WordApp = new Word.ApplicationClass();
> any ideas on how to solve this?
> Thanks a lot,
> Alejandro.
>
>
Not to be a nark or anything, but I think the licensing for office prohibits
this sort of usage on a webserver. Or, rather, you're supposed to have a
license for office for each user using your web application. At least this
is my understanding. I'd check the EULA.
BTW, this should be unrelated to the permission problem ;)
-Brock
DevelopMentor
http://staff.develop.com/ballen

> Hi. While trying to create a a word document in one of my asp.net
> pages I keep getting an ASP.NET permission error. first I thought it
> was been caused while trying to save the document, and I added
> permissions for the ASP.NET account to my folders. after that I
> realized that the error was being launche at the very first line of my
> function:
> Word.ApplicationClass WordApp = new Word.ApplicationClass();
> any ideas on how to solve this?
> Thanks a lot,
> Alejandro.
It's probably a security issue.
The ASPNET user account does have permission to run office by default.
You can use impersonation to have ASP.NET run under a different user account
that does have the necessary permission.
For example, you can add a line similar to this to your web.config file:
<identity impersonate="true" userName="domain\MyUserName">
password="password"/>
Here's more info on impersonation:
http://msdn.microsoft.com/library/d...personation.asp
Here's more info on generating office documents, including the wrong ways
(like office automation) and the right ways:
http://SteveOrr.net/articles/ExcelExport.aspx
I hope this helps,
Steve C. Orr, MCSD, MVP
http://SteveOrr.net
"Alejandro Penate-Diaz" <alexware69@.hotmail.com> wrote in message
news:%239TUIGSOFHA.1476@.TK2MSFTNGP09.phx.gbl...
> Hi. While trying to create a a word document in one of my asp.net pages I
> keep getting an ASP.NET permission error. first I thought it was been
> caused while trying to save the document, and I added permissions for the
> ASP.NET account to my folders. after that I realized that the error was
> being launche at the very first line of my function:
> Word.ApplicationClass WordApp = new Word.ApplicationClass();
> any ideas on how to solve this?
> Thanks a lot,
> Alejandro.
>
>

office automation securiy error

Hi. While trying to create a a word document in one of my asp.net pages I
keep getting an ASP.NET permission error. first I thought it was been caused
while trying to save the document, and I added permissions for the ASP.NET
account to my folders. after that I realized that the error was being
launche at the very first line of my function:

Word.ApplicationClass WordApp = new Word.ApplicationClass();

any ideas on how to solve this?
Thanks a lot,
Alejandro.For those who need the answer visit this link:
http://www.codeproject.com/aspnet/w...9372#xx999372xx

"Alejandro Penate-Diaz" <alexware69@.hotmail.com> wrote in message
news:%239TUIGSOFHA.1476@.TK2MSFTNGP09.phx.gbl...
> Hi. While trying to create a a word document in one of my asp.net pages I
> keep getting an ASP.NET permission error. first I thought it was been
> caused while trying to save the document, and I added permissions for the
> ASP.NET account to my folders. after that I realized that the error was
> being launche at the very first line of my function:
> Word.ApplicationClass WordApp = new Word.ApplicationClass();
> any ideas on how to solve this?
> Thanks a lot,
> Alejandro.
>
Not to be a nark or anything, but I think the licensing for office prohibits
this sort of usage on a webserver. Or, rather, you're supposed to have a
license for office for each user using your web application. At least this
is my understanding. I'd check the EULA.

BTW, this should be unrelated to the permission problem ;)

-Brock
DevelopMentor
http://staff.develop.com/ballen

> Hi. While trying to create a a word document in one of my asp.net
> pages I keep getting an ASP.NET permission error. first I thought it
> was been caused while trying to save the document, and I added
> permissions for the ASP.NET account to my folders. after that I
> realized that the error was being launche at the very first line of my
> function:
> Word.ApplicationClass WordApp = new Word.ApplicationClass();
> any ideas on how to solve this?
> Thanks a lot,
> Alejandro.
It's probably a security issue.
The ASPNET user account does have permission to run office by default.
You can use impersonation to have ASP.NET run under a different user account
that does have the necessary permission.

For example, you can add a line similar to this to your web.config file:
<identity impersonate="true" userName="domain\MyUserName">
password="password"/
Here's more info on impersonation:
http://msdn.microsoft.com/library/d...personation.asp

Here's more info on generating office documents, including the wrong ways
(like office automation) and the right ways:
http://SteveOrr.net/articles/ExcelExport.aspx

--
I hope this helps,
Steve C. Orr, MCSD, MVP
http://SteveOrr.net

"Alejandro Penate-Diaz" <alexware69@.hotmail.com> wrote in message
news:%239TUIGSOFHA.1476@.TK2MSFTNGP09.phx.gbl...
> Hi. While trying to create a a word document in one of my asp.net pages I
> keep getting an ASP.NET permission error. first I thought it was been
> caused while trying to save the document, and I added permissions for the
> ASP.NET account to my folders. after that I realized that the error was
> being launche at the very first line of my function:
> Word.ApplicationClass WordApp = new Word.ApplicationClass();
> any ideas on how to solve this?
> Thanks a lot,
> Alejandro.
>

Office Components and IIS and .NET Framework

I'd like to generate a Word document from a web app and found many articles that support doing so. However, office components are not available on our web server. Our sys admin told us it is not recommended to install Office components on the web server because Word is client software. (We are so sys admin ignorant in our developer shop.) Does anyone know if this is also true with the .NET framework - that we should not install Office components on the web server?
Thanks so much.Yes, it is recommended not to run office products on a dedicated server.
On one of our servers, MS Access was put on it ONLY because a couple databases may need maintainence from time to time.
There are other servers; however, that are dedicated to running office products that the entire company can share so people don't have to load those products on their local machine.
You may want to look into that option, another server running office and utilities, and then connect to that from your IIS server to launch Word.
Zath

Thanks for your reply.
I was referring to creating word documents via C#.NET using a web pageas the interface. My attempts to do so using wordApp = newWord.ApplicationClass(); failed with error:
COM object with CLSID {000209FF-0000-0000-C000-000000000046} is either not valid or not registered
which I understood was related to Word not being available on the Web Server.
I will look at using MIME types.
Thank you again!
a once former virgin poster,
elle_f

And just came across this bit of code that may interest you...
http://www.developerfusion.com/forums/topic-22540
Zath

Office Document Viewer

Hi,

i am searching for a WebForm Component or a Way to show
Word, Powerpoint and Excel Files in an Viewer on the ASPX
Page. Is this possible? How can i do that or which
Component can is use?

Thanks
Yavuz BogazciYou can use office web components. For example Microsoft Office SpreadSheet
component to display excel files. It must be on the components tab, if it is
not there add it using add/remove items

"Yavuz Bogazci" <news_NOSPAMM_@.bogazci.com> wrote in message
news:0b8401c3af49$74c3d390$a301280a@.phx.gbl...
> Hi,
> i am searching for a WebForm Component or a Way to show
> Word, Powerpoint and Excel Files in an Viewer on the ASPX
> Page. Is this possible? How can i do that or which
> Component can is use?
> Thanks
> Yavuz Bogazci
Can i use this on WebForms? An what should i use for Word Documents?

Thanks
Yavuz Bogazci

"Ayca Aksu" <ayca_aksu@.hotmail.com.nospam> schrieb im Newsbeitrag
news:OPcWhQ2rDHA.4056@.TK2MSFTNGP11.phx.gbl...
> You can use office web components. For example Microsoft Office
SpreadSheet
> component to display excel files. It must be on the components tab, if it
is
> not there add it using add/remove items
> "Yavuz Bogazci" <news_NOSPAMM_@.bogazci.com> wrote in message
> news:0b8401c3af49$74c3d390$a301280a@.phx.gbl...
> > Hi,
> > i am searching for a WebForm Component or a Way to show
> > Word, Powerpoint and Excel Files in an Viewer on the ASPX
> > Page. Is this possible? How can i do that or which
> > Component can is use?
> > Thanks
> > Yavuz Bogazci

Office interop from asp.net (vb) - permissions problem....

Hi,

I am trying to open a word document from an asp.net page but I keep getting
an access denied error when I try to create an instance of the word
applications.

I have created references to the Office 11.0 Object and it imported the
other references (except stdole which I did manually)

I have imported namepsaces:

Imports System.ComponentModel
Imports Microsoft.Office.Interop

The code I am calling is:

Dim oWordApp As Word.Application
Dim oWordDoc As Word.Document
oWordApp = New Word.Application '<<<<<<<<<<<<<<<<< ERROR
oWordDoc = oWordApp.Documents.Open("c:\text.doc")

The error below says I should give access permission to the ASPNET user. But
a) that user does not exist on my machine - I think it is 'Authenticated
user' that I need and b) which file needs to be given permission?!? I have
tried giving this user full control over the entire Office folder (not
something I'd do on a production server), but no go!

Does anyone know which file needs permission? Any other suggestions?

Thanks in advance,

Stuart

================================================== ==================
The error:
Access is denied.
Description: An unhandled exception occurred during the execution of the
current web request. Please review the stack trace for more information
about the error and where it originated in the code.

Exception Details: System.UnauthorizedAccessException: Access is denied.

ASP.NET is not authorized to access the requested resource. Consider
granting access rights to the resource to the ASP.NET request identity.
ASP.NET has a base process identity (typically {MACHINE}\ASPNET on IIS 5 or
Network Service on IIS 6) that is used if the application is not
impersonating. If the application is impersonating via <identity
impersonate="true"/>, the identity will be the anonymous user (typically
IUSR_MACHINENAME) or the authenticated request user.

To grant ASP.NET write access to a file, right-click the file in Explorer,
choose "Properties" and select the Security tab. Click "Add" to add the
appropriate user or group. Highlight the ASP.NET account, and check the
boxes for the desired access.No. ASPNET is a restricted account that's somewhat like "guest" account. It
cannot be used to execute anything outside your web process.

Instead, you should try to "impersonate"(Google for this keyword for usage)
a real "user" account, and give the "user" permission to that directory too,
of course.

"Stu" <s.lock@.cergis.com> glsD:OTqqejQjFHA.3144@.TK2MSFTNGP12.phx.g bl...
> Hi,
> I am trying to open a word document from an asp.net page but I keep
> getting an access denied error when I try to create an instance of the
> word applications.
> I have created references to the Office 11.0 Object and it imported the
> other references (except stdole which I did manually)
> I have imported namepsaces:
> Imports System.ComponentModel
> Imports Microsoft.Office.Interop
> The code I am calling is:
> Dim oWordApp As Word.Application
> Dim oWordDoc As Word.Document
> oWordApp = New Word.Application '<<<<<<<<<<<<<<<<< ERROR
> oWordDoc = oWordApp.Documents.Open("c:\text.doc")
> The error below says I should give access permission to the ASPNET user.
> But a) that user does not exist on my machine - I think it is
> 'Authenticated user' that I need and b) which file needs to be given
> permission?!? I have tried giving this user full control over the entire
> Office folder (not something I'd do on a production server), but no go!
> Does anyone know which file needs permission? Any other suggestions?
> Thanks in advance,
> Stuart
>
> ================================================== ==================
> The error:
> Access is denied.
> Description: An unhandled exception occurred during the execution of the
> current web request. Please review the stack trace for more information
> about the error and where it originated in the code.
> Exception Details: System.UnauthorizedAccessException: Access is denied.
> ASP.NET is not authorized to access the requested resource. Consider
> granting access rights to the resource to the ASP.NET request identity.
> ASP.NET has a base process identity (typically {MACHINE}\ASPNET on IIS 5
> or Network Service on IIS 6) that is used if the application is not
> impersonating. If the application is impersonating via <identity
> impersonate="true"/>, the identity will be the anonymous user (typically
> IUSR_MACHINENAME) or the authenticated request user.
> To grant ASP.NET write access to a file, right-click the file in Explorer,
> choose "Properties" and select the Security tab. Click "Add" to add the
> appropriate user or group. Highlight the ASP.NET account, and check the
> boxes for the desired access.
Many thanks - that did the trick.

Stu

"Lau Lei Cheong" <leu_lc@.yehoo.com.hk> wrote in message
news:evrIHLRjFHA.3580@.TK2MSFTNGP09.phx.gbl...
> No. ASPNET is a restricted account that's somewhat like "guest" account.
> It cannot be used to execute anything outside your web process.
> Instead, you should try to "impersonate"(Google for this keyword for
> usage) a real "user" account, and give the "user" permission to that
> directory too, of course.
> "Stu" <s.lock@.cergis.com>
> glsD:OTqqejQjFHA.3144@.TK2MSFTNGP12.phx.g bl...
>> Hi,
>>
>> I am trying to open a word document from an asp.net page but I keep
>> getting an access denied error when I try to create an instance of the
>> word applications.
>>
>> I have created references to the Office 11.0 Object and it imported the
>> other references (except stdole which I did manually)
>>
>> I have imported namepsaces:
>>
>> Imports System.ComponentModel
>> Imports Microsoft.Office.Interop
>>
>> The code I am calling is:
>>
>> Dim oWordApp As Word.Application
>> Dim oWordDoc As Word.Document
>> oWordApp = New Word.Application '<<<<<<<<<<<<<<<<< ERROR
>> oWordDoc = oWordApp.Documents.Open("c:\text.doc")
>>
>> The error below says I should give access permission to the ASPNET user.
>> But a) that user does not exist on my machine - I think it is
>> 'Authenticated user' that I need and b) which file needs to be given
>> permission?!? I have tried giving this user full control over the entire
>> Office folder (not something I'd do on a production server), but no go!
>>
>> Does anyone know which file needs permission? Any other suggestions?
>>
>> Thanks in advance,
>>
>> Stuart
>>
>>
>> ================================================== ==================
>> The error:
>> Access is denied.
>> Description: An unhandled exception occurred during the execution of the
>> current web request. Please review the stack trace for more information
>> about the error and where it originated in the code.
>>
>> Exception Details: System.UnauthorizedAccessException: Access is denied.
>>
>> ASP.NET is not authorized to access the requested resource. Consider
>> granting access rights to the resource to the ASP.NET request identity.
>> ASP.NET has a base process identity (typically {MACHINE}\ASPNET on IIS 5
>> or Network Service on IIS 6) that is used if the application is not
>> impersonating. If the application is impersonating via <identity
>> impersonate="true"/>, the identity will be the anonymous user (typically
>> IUSR_MACHINENAME) or the authenticated request user.
>>
>> To grant ASP.NET write access to a file, right-click the file in
>> Explorer, choose "Properties" and select the Security tab. Click "Add" to
>> add the appropriate user or group. Highlight the ASP.NET account, and
>> check the boxes for the desired access.
>>
Many thanks - that did the trick.

Stu

"Lau Lei Cheong" <leu_lc@.yehoo.com.hk> wrote in message
news:evrIHLRjFHA.3580@.TK2MSFTNGP09.phx.gbl...
> No. ASPNET is a restricted account that's somewhat like "guest" account.
> It cannot be used to execute anything outside your web process.
> Instead, you should try to "impersonate"(Google for this keyword for
> usage) a real "user" account, and give the "user" permission to that
> directory too, of course.
> "Stu" <s.lock@.cergis.com>
> glsD:OTqqejQjFHA.3144@.TK2MSFTNGP12.phx.g bl...
>> Hi,
>>
>> I am trying to open a word document from an asp.net page but I keep
>> getting an access denied error when I try to create an instance of the
>> word applications.
>>
>> I have created references to the Office 11.0 Object and it imported the
>> other references (except stdole which I did manually)
>>
>> I have imported namepsaces:
>>
>> Imports System.ComponentModel
>> Imports Microsoft.Office.Interop
>>
>> The code I am calling is:
>>
>> Dim oWordApp As Word.Application
>> Dim oWordDoc As Word.Document
>> oWordApp = New Word.Application '<<<<<<<<<<<<<<<<< ERROR
>> oWordDoc = oWordApp.Documents.Open("c:\text.doc")
>>
>> The error below says I should give access permission to the ASPNET user.
>> But a) that user does not exist on my machine - I think it is
>> 'Authenticated user' that I need and b) which file needs to be given
>> permission?!? I have tried giving this user full control over the entire
>> Office folder (not something I'd do on a production server), but no go!
>>
>> Does anyone know which file needs permission? Any other suggestions?
>>
>> Thanks in advance,
>>
>> Stuart
>>
>>
>> ================================================== ==================
>> The error:
>> Access is denied.
>> Description: An unhandled exception occurred during the execution of the
>> current web request. Please review the stack trace for more information
>> about the error and where it originated in the code.
>>
>> Exception Details: System.UnauthorizedAccessException: Access is denied.
>>
>> ASP.NET is not authorized to access the requested resource. Consider
>> granting access rights to the resource to the ASP.NET request identity.
>> ASP.NET has a base process identity (typically {MACHINE}\ASPNET on IIS 5
>> or Network Service on IIS 6) that is used if the application is not
>> impersonating. If the application is impersonating via <identity
>> impersonate="true"/>, the identity will be the anonymous user (typically
>> IUSR_MACHINENAME) or the authenticated request user.
>>
>> To grant ASP.NET write access to a file, right-click the file in
>> Explorer, choose "Properties" and select the Security tab. Click "Add" to
>> add the appropriate user or group. Highlight the ASP.NET account, and
>> check the boxes for the desired access.
>>