WebDav server - how to display a user friendly locked reason - webdav

I have implemented a WebDav server using IT Hit for the purpose of allowing editing of MS Office documents that users attach as part of the workflow in our application.
In order to prevent multiple concurrent edits I throw a LockedException from the ILock.Lock() method, which responds to the request with a 423 Locked response.
This causes Office to display the following popup to the user:
This works fine to prevent two users editing the same document.
However, documents can be locked down in our system and then can no longer be edited - they can only be viewed as read-only. This message is misleading to the user who might believe that another user is editing the document when in fact it is locked down.
Is there any way to display a different locked message?
Is there any way to force read-only mode, i.e. remove the second option in the popup and prevent editing?

From our experience here is no way to modify this message somehow (at least we do not know any solution). Behind the scenes Microsoft Office is using Mini-redirector driver for communication with WebDAV server. Most response codes are ignored by Microsoft Mini-redirector. It just passes a dummy error to the calling application or Microsoft Office will ignore the returned error, regardless of the response codes or WebDAV error messages returned by server.

Related

Office online server didn't send UNLOCK action when I closed the session

I am trying to integrate Office Online Server with Alfresco. I have deployed Office Online and AD server in my VM. 'View' and 'Edit' action both work well in my system.
But there is some problem when I try to use the collaboration edit. Office server should send an "UNLOCK" action with "X-WOPI-LOCK" headers to my server when I'm closing the browser tab, but I never receive it. The only "UNLOCK" action I can receive is someone else trying to fetch "X-WOPI-LOCK" with an incorrect LockId, as following official explain.
WOPI defines a GetLock operation. However, Office for the web does not use it in all cases, even if the host indicates support for the operation using the SupportsGetLock property in CheckFileInfo. Instead, Office for the web will sometimes execute lock-related operations on files with missing or known incorrect lock IDs and expects the host to provide the current lock ID in its WOPI response. Typically the Unlock and RefreshLock operations are used for this purpose, but other lock-related operations may be used.
And documentation also says there is an "X-WOPI-Editors" header that will be sent with the "PutFile" action, but I can't receive either.
My environment:
windows_server_2016_vl_x64
Office online server march_2017_x64
According to this this question on MSDN this is a new behaviour in the Chromium engine as of Oct 2019. There is a call to Office Online Server to announce that the editing session is over but it gets stopped by the browser.
Give it a try in IE to check whether it behaves correctly for you. My experience of this is that going in&out of the online editor a couple times will cause me to be forced into readonly mode by my own online sessions when trying to use "Edit in Word" (desktop). Co-authoring would work OK in the online editor just so long as you don't mind being told there are multiple other people currently editing the document and they're all you.
This is a known issue where Chrome is deprecating Sync XHR on Oct 22 2019, affecting WAC's ability to unlock file and shutdown gracefully. So browsers like Chrome and Edge have this issue for powerpoint. For word and excel files this issue has been fixed.
However, it runs fine in Firefox and IE.
No permanent fix is able for ppt as of now, but you can try several temporary solutions:
go to link chrome://flags/#allow-sync-xhr-in-page-dismissal in Chrome set this property as Enabled. The same applies for Edge browser, simply replace chrome with edge in the above link.
Other temporary solutions are mentioned in this thread: https://social.msdn.microsoft.com/Forums/en-US/1b783d1c-c686-4b2d-b23f-4977e6bed806/wopi-unlock-call-never-gets-triggered-in-chrome-and-latest-edge-browser?forum=os_office

internal app needs to query a database on a server in dmz

I'm developing an app using asp and vb.net. Hitting a db that is sql2008 r2. There's an internal app which sends an email to a customer. the email contains a link which the customer clicks on, and then the page load of that page updates a database sitting on our dmz. I'm trying to write a service then which will query this database at various times, and then, based on that result, fire off an email to an internal group. Originally this was set up to fire the email from the box on the dmz, however our NA doesn't like having port 25 open like that, so now I have to rebuild the app internally to query that database, so that the inbound email can be generated on an internal box.
SO... my problem is making the connection in Visual Studio (2012). When you configure the sql data source to a box inside the network, all you need is the name of the server, and you'll get the drop down populated with the databases. At first VS wouldn't see the server at all. We turned on "named pipes" on the server, and then I entered the server name as ip,80 (this is the only port the NA will allow open) and now it will see it, however, before the dropdown gets populated, I get an error saying "A connection was successfully established with the server, but then an error... an existing connection was forcibly closed by the remote host." I know sql normally runs on port, what, 1443? something like that? but if I do that, it goes back to not being seen.
Is there a way to configure the sql data source to see this server? I've researched for a couple of days, but generally the topics have been working the other direction, or related to sporadic issues, which this isn't. Our NA isn't much of a programmer, so he doesn't know much about my end, only that he seems sure that using named pipes is the way I need to get in... however, beyond enabling them on the server, I don't know much about them, or if VS can even use them...
thanks in advance.
(I've been coming to this site for a long time now for answers; this is the first time I've ever had post a question)
Wow, a MS SQL Server in your DMZ???
Short answer is to tell your NA he doesn't need to open port 25 for you to SEND an email, unless there is some part of the story I am missing.
The better answer, get that server out of the DMZ and create a web service. They are easy and can be made very secure.

Error 403 on SECOND postback of the same form (and various other situations)

we recently migrated our application (IIS Server + DB Server) to AWS and also modified the network architecture a little bit. The entry point of the system is an Astaro Firewall (we use the AWS AMI) which also host the SSL certificate of the web server. Everything related to the firewall has been done by a vendor and we only have some read-only privileges.
We are getting 403 errors in a few situations but I will explain one, as they all may be related.
We got a form which query the database and return a report in HTML format (this report also have some checkbox to do updates). The first time the form is submitted, we always get the report back. If we wanna post the form again, updated with new data, it crash, returning error 403. We noted that it doesn't crash when the first results returned a very low number of rows (or none).
Looking at the details of the POSTs in Developer Tools, what seems to be the only difference between a working and 403 error reply is the size of the data posted. The second post is always bigger because it contains the data of the first report (as the page have also other option to checkbox the rows).
Also, looking at the IIS logs we don't see any traces of the POST that crash. Nothing at all.
This problem happen only in production. In dev environment it's all working flawlessly. The only difference is that the production have the firewall/ssl, while development is all open. This is why we think it may be related to SSL.
The vendor is not the most helpful, we are looking for help to pinpoint the issue and trying to take the situation in our hands.
Any input appreciated.

Bogus URL access causing server to hang

When a unavailable url is accessed, we internally raise an exception and email to support team. We do this to identify is there is hidden error in our web application. Couple of days back, suddenly there was a huge number of access to unavailable url which added load to server and casued SMTP to queue large exception emails. This attempt has brought IIS completely down and none of the applications are accessible.
How to prevent this? Is there any other option like firewall etc to disallow continues request from same ip. I have seen this behavior in google. How can we achieve that?
I'd suggest caching already sent notifications. Before your application sends email, it can check if this error is already reported.
And you can set the cache validity to, say 1 minute, so you get maximum 1 same email/minute.
It is quite easy to implement in ASP.NET.

Channel.Ping.Failed error Detected duplicate HTTP-based FlexSessions What's the root cause?

Hi
I've downloaded the Cairngorm3 Simple Sample Application from here.
There's a few steps.
a) Download the server-side zip. It contains a PDF instructing how to start a HSQLDB database and get a Tomcat instance up an running (I used catalina.sh start).
b) Check out the source with Subversion, and load it up into Flashbuilder 4. (You need Flex 3.4 SDK)
When I run the app (an Outlook like app written in Flex), I have issues at the point I try and save a contact. I'm assuming it's on a remoteobject call.
But it I get this:
Send failed
faultCode:Client.Error.MessageSend faultString:'Send failed' faultDetail:'Channel.Ping.Failed error Detected duplicate HTTP-based FlexSessions, generally due to the remote host disabling session cookies. Session cookies must be enabled to manage the client connection correctly. url: 'http://localhost:8400/messagebroker/amf;jsessionid=5765DDDB6E2D54BD03D3E636B0E8C03E'''
I'm wondering if this is something you need to tweak in services-config.xml?
Located in flex-frameworks/tomcat/webapps/ROOT/WEB-INF/flex folder (flex-frameworks comes from the server-side zip download:
Anyone got any ideas?
This is Christophe Coenraets baby.
I also subsequently found a blog post by Alexander Glosband, but couldn't ascertain from it, what you need to do as a work around. i.e. Is this something that is configurable?
The way to reproduce the error consistently is to try and activate the web camera from the app. Then instead of clicking accept, reload the screen. Then when you try and take a photo after subsequently granting access to camera, you get the duplicate session error.
I think there is an issue with the code pertaining to the Camera, that's not cleaning up after itself correctly, the session is probably not being tidied up correctly.
You are right, problem comes from services-config.xml. Change your url from
http://localhost:8400/messagebroker/amf
to
/messagebroker/amf
I found solution from here send failed error
"Compiler EMBEDS channels, endpoints and destinations into SWF" video tells.

Resources