Custom Events Application Insights - azure-web-app-service

I have a project where it was capturing custom events, exception, page views..
It is not throwing any error and working perfectly in my local machine and it was showing in the azure dashboard., The azure team has created the new dashboard and now i am seeing pageviews, exceptions but not custom events.,
I enabled the custom events option from the dashboard too... Even though it is not being displayed... If you see the exception it is custom exception and it thrown from the same code.. it works fine but custom event not...
Any idea....

Given that you've stated you are seeing pageviews and exceptions, and that you have a class i'm presuming 2 things about your project:
asp.net, using the .net ApplicationInsights.Web, etc nuget packages
web pages, using the Javascript application insights snippet+etc.
Given those 2 assumptions, i'm presuming your custom events are in the c# code?
If you're seeing pageviews and browser exceptions, that means the instrumentation key being used by the javascript code is one thing, (probably hardcoded directly in _layout.cshtml or something similar?) and the instrumentation key used by the asp.net code is something else, (probably coming from applicationinsights.config file?)
If you've changed the instrumentation key in one place, make sure you've changed it in both.
One way to verify this is to use something like Fiddler, and go to your site, and watch for calls to dc.services.visualstudio.com (those are calls from the sdks to send data). the javascript code will make some calls, and the asp.net code will make its own calls. inside the outbound data will be instrumentation keys, and you can se which one is using which, and which one you need to fix.

Related

Microfrontend or how to share smart UI components?

I work in a company where we have many different applications. To reduce code repetition and keep the experience for the users the same across applications we created a component library which is used by all applications.
Now we want to allow the users to switch between applications. Something similar like Google does:
Screenshot of Google Application Drawer
An additional requirement for our "Application Switcher" would be that it "updates" itself. Meaning if we change how this "Application Switcher" looks we don't want all applications which use this Switcher to create a new deployment and be newly deployed.
So currently we use the same header (from our component library) in all our applications. So, my idea was just to simply add a script tag to all the index.html pages of all the applications which should support this "Application Switcher". The Script would parse the DOM, find the header and inject a component for this application switcher. I wanted to host the actual script from a CDN like server and the script tag in the index.html just references this URL. This way we could change this script however we want, and all the applications will always get the latest version.
Now I did a small proof of concept in our environments and solved all the CORS issues but since we were fetching from an authenticated context and the script was also in an authenticated context I always got a 401.
Additionally, we have the requirement, that this "Application Switcher" shows different applications to different users i.e. depending on which apps a user is allowed to access. So, the script itself will also do calls to an "Application Switcher" backend providing it user-specific information.
Now this makes me think that my initial idea of just putting a script tag and fetching from a CDN was too simplistic. Now I'm thinking if it would be better to implement a rest endpoint in all applications to fetch this script. This way I don't have the problems of fetching a resource from an authenticated context from the user's browser and instead can handle all of this in the backend.
So long story short; I feel like a complete noob who just hacks around to get things working (or actually not working) and was wondering if any of the smart internet people out there (who might actually already have experience with this) could give me a hint what would be a clean way to implement this?

Do duplicate registrations have bad consequences?

Registering the same device with the same tags and template results in multiple identical registrations in the hub.
Will this cause a problem and will Azure eventually remove them?
It doesn't seem to result in duplicate messages sent to a device.
I figure I can limit duplicate registrations by checking to see if they exist first using GetRegistrationsByTagAsync.
Even that method only takes one tag, so it's then typically necessary to iterate over all the tags for each registration to complete a match. Plus, the device token needs to be added as a tag because the registration base class doesn't have a "token" property. (EDIT: Actually, that doesn't work because it says the token is an invalid tag. So I'm going for one installation per platform - perhaps I could switch on the installation's class type to get the token value.)
Honestly, this API seems somewhat half baked. Even the newer installation based part of the API doesn't even let you download all the installations so you have to have some way of keeping track of them if you want to update them. If you have to keep a copy of this data then you may as well skip Azure altogether.
You can get the installations from the Azure tab in Visual Studio but once deleted, it doesn't seem possible to reinstall a device.
What a mess.

Error creating brands through API on demo system

I am dual-posting this here while I wait for DocuSign support to get around to assisting in the hopes someone here has some more insight.
Our application uses the DocuSignConnect API to manage brands. It has been in production for years and worked without issues. Sometime last week, our API calls to create brands began failing, but only on the Demo system. This functionality is continuing to work fine in the Production system. There are no code differences between our Demo and Prod environments.
In the past, we have seen issues (of a different kind) when changes are rolled out to the DocuSign Demo system. I wonder if this could be one of those scenarios.
The details are limited. Our API calls to create a brand are met with a failure with the following properties:
ErrorCode: 309
ErrorReason: Brands could not be created.
faultString: Brands could not be created. Unable to upload brand, error: Must specify valid information for parsing in the string.
As I mentioned above, our application has not changed recently with respect to the DocuSignConnect API. I have noticed, however, that the Signing and Email resource xml files appear to be undergoing a change (they differ significantly between DocuSign's Prod and Demo sites.) Perhaps this is a clue behind the fairly unhelpful "...specify valid information for parsing..." message.
My concern is that something is soon to be deployed to Production that will break our application.
I should add that our other API calls seem to be ok (sending envelopes, for example)
Has anyone experienced this type of problem creating brands?
The update on this from DocuSign support is that the 'type' attribute on the 'logo' element that is part of the XML schema defined in the 'CreateBrand' API call has changed from optional (in their PROD environment) to required (in their DEMO environment).
They are probably going to be changing their DEMO code to revert this attribute back to 'optional' before it is deployed to their PROD system.
But in any event, our code is going to change to start including the 'type' attribute on the 'logo' elements to ensure success going forward regardless.

Is my site hacked?

I have my client website www.healthiva.com.. this is developed in .Net C#. In global.asax i have a functionality to send alert email to development team, if any unhandled exceptions are thrown in the whole application. Some times dev team gets email like "The file '/ivr/VAD_Deploy1.aspx' does not exist", "The file '/ivr/mxm_3cx/mxm30.aspx' does not exist".. Our application does not have these files obviously & hence the error. Now my worry is, is someone trying to hack our site by running some scripts ? if yes, please suggest some good security policies.. (the site already uses SSL)..
You are safe
I've just done a couple of tests to see, and it appears that you are getting these errors because other resources in your application are trying to access these directories. Rather than handle these errors and provide a user safe code, it's simply throwing a default server error. Your website is not being hacked - it's just badly written (Sorry, no offence) and lacks sufficient logging techniques.
However, that does not mean that you are still 100% safe. You can either consult with a private security expert or look at automated tools online to test the security of your website. I'd recommend doing some research on the OWASP Top 10 for this, and how to prevent these measures. Most hackers will try to go for one of these methods before trying more robust and niché attacks.
EDIT: Relevant image showing what happens when the server throws an exception

Showing Azure WebJob Functions log using API (Kudu)

I am using Kudu Api to display some webjob data on a website monitoring app I created. The web app monitors data from a few other websites I created. I was wondering what API endpoints do I need to run in order to get the data from this page:
https://{my_website}.scm.azurewebsites.net/azurejobs/#/functions
I am interested in displaying some of the data from this page (functions, statistics, Invocation Log - Recently executed functions)
At the moment I am parsing a text file, but I find this highly inefficient if there's a better option available:
https://{my_website}.scm.azurewebsites.net/vfs/data/jobs/continuous/{my_webjob}/job_log.txt
Any suggestions would help, thanks in advance.
As written in comments the WebJob client is javascript based you can see every call it makes in the console of your browser, there you will find a call to:
https://<sitename>.scm.azurewebsites.net/azurejobs/api/functions/definitions?lim‌​it=100
This give a list of the functions in the webjob.

Resources