You are viewing limited content. For full access, please sign in.

Question

Question

Cloud Web Request Rule - What does "The URI is empty" actually mean?

asked on April 15

I randomly get this error calling a web request rule from workflow and I don't understand it because the URI includes some hard coded information, so it can not be empty. What does it actually mean and why is it random?

If I open the rule and test it manually it does not tell me that the URI is empty.

0 0

Replies

replied on April 15 Show version history

What is the full exact string of the error message? I'm trying to check what function can throw that error, but a whole codebase search for the string "The URI is empty" returned zero hits for anything Web Request Rule related.

0 0
replied on April 15
{"ClassName":"System.UriFormatException","Message":"Invalid URI: The URI is empty.","Data":{"OperationId":"0ac97f7603ad4ac8940f63a8838a8fc8","$$$Reported":"OperationLogger"},"InnerException":null,"HelpURL":null,"StackTraceString":"   at System.Uri.CreateThis(String uri, Boolean dontEscape, UriKind uriKind, UriCreationOptions& creationOptions)\n   at System.Uri..ctor(String uriString, UriKind uriKind)\n   at Laserfiche.Blob.FileStoreDirectEngine.ResolveBlobId(String id)\n   at Laserfiche.WebRequests.Messa...

 

0 0
replied on April 15 Show version history

Thanks, that quickly led me to where the error is coming from:

Laserfiche.Blob.FileStoreDirectEngine.ResolveBlobId(String id)

That function takes in a blob storage object ID and appears to generate a URI based on it. For a pseudocode example, something like this:

Laserfiche.Blob.FileStoreDirectEngine.ResolveBlobId("abc123") == https://s3.amazonaws.com/examplebucket/abc123 

What's plausibly happening is that for whatever reason, either a null or invalid blob object ID is getting passed to the function, causing the URI generation to fail, causing whatever validates that generated URI to throw the 

"Invalid URI: The URI is empty."

error you're seeing. The error comes from a low level operating system library exception "System.UriFormatException", which is why I couldn't find it in our code. 

So long story short, it looks like the error isn't about the URI you're telling the Web Request Rule to call, but rather a different URI that Cloud generates for some request handling purpose. Perhaps that ResolveBlobId URI is where Cloud temporarily stores the Web Request response. Just a guess.

Anyway, I don't know offhand how or why your Cloud Web Request Rule ends up calling this ResolveBlobId function or why the it's failing to generate a valid URI. Maybe a bug or unhandled edge case, maybe a configuration issue, maybe something else.

Either way, definitely a support case. They'll have the backend visibility necessary to troubleshoot this further (I do not). You should link this Answers post in the case so Support can pick up where my investigation left off. Tell them I said to look at "Business Rules Task #508796", which while about a different issue, contains a detailed log file that happens to include this same specific error / stack trace pattern.

0 0
replied on April 16

It went away this morning and just came back. I can not seem to reproduce it from other cloud systems, even copying the same rules back and forth.

Just created the official support case: 238099

Thanks for looking into this, we were going crazy trying to figure out what was wrong with the rule config looking for any typo in the content body that might be causing it to think the URI is empty.

1 0
You are not allowed to follow up in this post.

Sign in to reply to this post.