728x90

1. So with that here’s what I’m going to cover in this demo

1.1Create your Function App

1.2Set Function App Trigger

1.3Add the Custom domain

1.4Test and validateResources:

 

By default, all users are accessing their browser-based virtual desktops is via the same link using a Microsoft URL which is same for all customer (https://rdweb.wvd.microsoft.com/webclient/index.html)

 

As this URL is a bit long as well as not that easy to memorize, most of entities will be looking for setting their own Custom URL using the corporate domain name. same idea as myapps.3tallah.com or mail. 3tallah.com, for sure it would be up to you to set your preferred subdomain name.

 

In this blogpost we are going to use Azure Functions, which allows you to execute your code in a serverless compute platform, and the consumption plan pricing includes a monthly free grant of 1 million requests, this would be saving you from the hassle of creating, configuring and securing an IIS virtual machine and will as the cost of compute.

 

So with that here’s what I’m going to cover in this demo

1.Create your Function App

2.Set HTTP Trigger

3.Add the Custom domain

4.Test and validate

 

Create your Function App

Open Create a Function App blade

  • Subscription: Select the subscription where the new Function App will be created.
  • Resource group: Create a new resource group or use an existing one.
  • Function App name: Enter globally unique name for the Function App (Ex.wvdwebredirect01)
  • Publish: Select (Code)
  • Runtime stack: .NET CoreVersion: 3.1
  • Region: Select the (Region) where you want to create the Function App

 

When creating a function app, you must create or link to a general-purpose Azure Storage account that supports Blobs, Queue, and Table storage. Select The Operating System that’s recommended for you based on your selection of runtime stack, And The plan that dictates how your app scales, what features are enabled, and how it is priced.

 

  • Storage: Create a new StorageAccount or use an existing one.
  • Operating system: Select (Windows),
  • Plan: Select (Consumption Servless)

Application Insights is a code-less attach to provide detailed observability into your application.Don’t enable Application Insights as its not really required for this scenario.

Function app creation is completed and that gives us an app service that’s the function app itself, an app service plan which is the compute that it’s connected to when it runs, and there’s also a storage account here in case we need to store any data.

Set Function App Trigger

1.Open

Function App blade

2.Click on the created Function App in our case (wvdwebredirection)

3.Click on the Function tab > Click Add

4.Click on the HTTP Trigger

  1. Give the New Trigger Function a Name ( Ex. WVDHttpTrigger )
  2. Select Funcation as Authorization level >Create

1.Once created open Code + Test Tab, So that we’re going to just delete all the exist code and use Tom’s Code below

2.Github Link

3.Only change that you have to do is it change this part (“wvd.3tallah.com“) with yours

4. Click Save > Click Get function URL > Copy the URL

1.Go back the created Function App main blade in our case (wvdwebredirection)

2.Click on the Proxies tab > Click Add > Give it a Name

3.Route template just add (/)

4.Backend URL: paste the Copied function URL > Click Create

Add the Custom domain

Last step is to add your corporate domain as a custom domain lets hit to Custom domains tab so we can configure and manage custom domains assigned to your app.

 

1.Open

   Function App blade

2.Click on the created Function App in our case (wvdwebredirection)

3.Copy Function App URL and Custom Domain Verification ID

4.Open your DNS Provider to Create new DNS Record.

5.Create CNAME Record for this Function App URL in DNS provider.

 

 

1.Create TXT Record in DNS provider verify your ownership of the custom domain.

 

1.Back to the Function App blade

2.Click on the Custom domains tab > Click Add custom domain

3.Enter your corporate URL (Ex. wvd.3tallah.com) > Click Validate

 

It’ll show that you do own your domain and the hostname is available and then you can click the add custom domain button and then added for HTTP but not for an SSL state so if you want you can add a SSL certificate and do a binding here or that you can make this secure I’m gonna skip this step because this is just my lab now we should be able to test.

 

Test and validate

Open http://wvd.3tallah.com

 

Resources:

Code that have been used in this demo is being developed by Tom Hickling

728x90
728x90

When I am attempting to investigate a setup-related failure, I typically end up looking at verbose log files.  These log files can contain information about a wide variety of failures, and the failures will typically include some detailed error information (such as the information reported by the GetLastError and FormatMessage APIs or something equivalent to them).  In the case of verbose Windows Installer log files, I find the error information in most cases by searching for the text "return value 3" as described in this blog post.

Once I find the error information, I can often recognize the error codes from my past experience.  However, there are also a lot of cases where I run into error codes that I do not recognize from past experience.  When that happens, I use a tool that helps me translate error codes (normally HRESULT values from function calls) into more readable information.  Doing this can help me better understand what the error means, which in turn can help give ideas for what might be causing the error and what types of fixes might help eliminate the error.

Recently, I discovered that the tool that I've been using to do error code translation is available on the Microsoft Download Center so that anyone can get a copy and use it themselves.  You can find the tool, called Err.exe, at http://www.microsoft.com/downloads/details.aspx?familyid=be596899-7bb8-4208-b7fc-09e02a13696c.  This site describes the tool as an Exchange Server Error Code Look-up, but this tool actually aggregates information from 172 sources (header files, etc) from Windows and various other products around Microsoft and is not only useful for Exchange Server issues.

For example, it includes information from corerror.h (a header file that ships with the .NET Framework SDK and Windows SDK) so it can report error information for some types of .NET Framework errors.  Here are a couple of specific examples of the output produced by err.exe:

For error code 0x8002802F (described in more detail here):

Err.exe 0x8002802F
# for hex 0x8002802f / decimal -2147319761 :
  TYPE_E_DLLFUNCTIONNOTFOUND                                    winerror.h
# Function not defined in specified DLL.
# 1 matches found for "0x8002802F"

For error code 0x80070005 (described in more detail here):

Err.exe 0x80070005
# for hex 0x80070005 / decimal -2147024891 :
  COR_E_UNAUTHORIZEDACCESS                                      corerror.h
# MessageText:
# Access is denied.
  DIERR_OTHERAPPHASPRIO                                         dinput.h
  DIERR_READONLY                                                dinput.h
  DIERR_HANDLEEXISTS                                            dinput.h
  DSERR_ACCESSDENIED                                            dsound.h
  ecAccessDenied                                                ec.h
  ecPropSecurityViolation                                       ec.h
  MAPI_E_NO_ACCESS                                              mapicode.h
  STIERR_READONLY                                               stierr.h
  STIERR_NOTINITIALIZED                                         stierr.h
  E_ACCESSDENIED                                                winerror.h
# General access denied error
# 11 matches found for "0x80070005"

In some cases, as shown above for error code 0x80070005, the same error code can map to different meanings in different header files.  In those cases, it is sometimes necessary to make an educated guess about which one is the actual error code being generated by a setup error.  For example, in most cases, if an error code from winerror.h is listed in the output from err.exe, that one is the actual error code.

It is important to note that Err.exe is not intended to be a diagnostic tool on its own.  In other words, it will not be able to tell you how to fix a problem just based on what the error code is.  However, in my experience, Err.exe is very useful as a step along the path of attempting to solve a problem because it provides additional information about what an error code means.  Once you have a better idea about what an error code means, you can often use this additional information to perform some additional Web searches to learn about possible causes of and workarounds for specific types of errors.

 

 

https://blogs.msdn.microsoft.com/astebner/2008/06/17/information-about-the-err-exe-tool-i-use-to-look-up-error-codes-when-debugging-setup-issues/

 

오류코드참조

https://mani4u.tistory.com/24

728x90
728x90
Informational
100: Trying
180: Ringing
181: Call is being forwarded
182: Queued (temporarily unavailable, server has decided to queue the call)
183: Session Progress

Success
200: OK

Redirection
300: Multiple Choices
301: Moved Permanently
302: Moved Temporarily
303: See Other
305: Use Proxy
380: Alternative Service

Client Error
400: Bad Request
401: Unauthorized
402: Payment Required
403: Forbidden
404: Not Found
405: Method Not Allowed
406: Not Acceptable
407: Proxy Authentication Required
408: Request Timeout
409: Conflict
410: Gone
413: Request Entity Too Large
414: Request-URI Too Large
415: Unsupported Media Type
416: Unsupported URI Scheme
420: Bad Extension
421: Extension Required
423: Interval Too Brief
480: Temporarily not available
481: Call Leg/Transaction does not exist
482: Loop Detected
483: Too Many Hops
484: Address Incomplete
485: Ambiguous
486: Busy Here
487: Request Terminated
488: Not Acceptable Here
491: Request Pending
493: Undecipherable

Server Error
500: Internal Server Error
501: Not Implemented
502: Bad Gateway
503: Service Unavailable
504: Server Time-out
505: Version not supported
513: Message To Large

Global-Failure
600: Busy Everywhere
603: Decline
604: Does not exist anywhere
606: Not Acceptable


728x90

+ Recent posts