diff --git a/.vs/SummerBestWebForm2/v17/.suo b/.vs/SummerBestWebForm2/v17/.suo index 90cb9c7..c8fdb99 100644 Binary files a/.vs/SummerBestWebForm2/v17/.suo and b/.vs/SummerBestWebForm2/v17/.suo differ diff --git a/.vs/SummerBestWebForm2/v17/DocumentLayout.backup.json b/.vs/SummerBestWebForm2/v17/DocumentLayout.backup.json index 42d0450..400ee1c 100644 --- a/.vs/SummerBestWebForm2/v17/DocumentLayout.backup.json +++ b/.vs/SummerBestWebForm2/v17/DocumentLayout.backup.json @@ -3,28 +3,12 @@ "WorkspaceRootPath": "C:\\Repos\\SummerBestWebForm2\\", "Documents": [ { - "AbsoluteMoniker": "D:0:0:{10E16044-8880-42A4-866B-B0461C450A71}|SummerBestWebForm2.csproj|c:\\repos\\summerbestwebform2\\components\\pages\\test.razor||{40D31677-CBC0-4297-A9EF-89D907823A98}", - "RelativeMoniker": "D:0:0:{10E16044-8880-42A4-866B-B0461C450A71}|SummerBestWebForm2.csproj|solutionrelative:components\\pages\\test.razor||{40D31677-CBC0-4297-A9EF-89D907823A98}" - }, - { - "AbsoluteMoniker": "D:0:0:{10E16044-8880-42A4-866B-B0461C450A71}|SummerBestWebForm2.csproj|c:\\repos\\summerbestwebform2\\components\\pages\\home.razor||{40D31677-CBC0-4297-A9EF-89D907823A98}", - "RelativeMoniker": "D:0:0:{10E16044-8880-42A4-866B-B0461C450A71}|SummerBestWebForm2.csproj|solutionrelative:components\\pages\\home.razor||{40D31677-CBC0-4297-A9EF-89D907823A98}" + "AbsoluteMoniker": "D:0:0:{10E16044-8880-42A4-866B-B0461C450A71}|SummerBestWebForm2.csproj|c:\\repos\\summerbestwebform2\\components\\pages\\error.razor||{40D31677-CBC0-4297-A9EF-89D907823A98}", + "RelativeMoniker": "D:0:0:{10E16044-8880-42A4-866B-B0461C450A71}|SummerBestWebForm2.csproj|solutionrelative:components\\pages\\error.razor||{40D31677-CBC0-4297-A9EF-89D907823A98}" }, { "AbsoluteMoniker": "D:0:0:{10E16044-8880-42A4-866B-B0461C450A71}|SummerBestWebForm2.csproj|c:\\repos\\summerbestwebform2\\components\\pages\\weather.razor||{40D31677-CBC0-4297-A9EF-89D907823A98}", "RelativeMoniker": "D:0:0:{10E16044-8880-42A4-866B-B0461C450A71}|SummerBestWebForm2.csproj|solutionrelative:components\\pages\\weather.razor||{40D31677-CBC0-4297-A9EF-89D907823A98}" - }, - { - "AbsoluteMoniker": "D:0:0:{10E16044-8880-42A4-866B-B0461C450A71}|SummerBestWebForm2.csproj|c:\\repos\\summerbestwebform2\\components\\app.razor||{40D31677-CBC0-4297-A9EF-89D907823A98}", - "RelativeMoniker": "D:0:0:{10E16044-8880-42A4-866B-B0461C450A71}|SummerBestWebForm2.csproj|solutionrelative:components\\app.razor||{40D31677-CBC0-4297-A9EF-89D907823A98}" - }, - { - "AbsoluteMoniker": "D:0:0:{10E16044-8880-42A4-866B-B0461C450A71}|SummerBestWebForm2.csproj|c:\\repos\\summerbestwebform2\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{10E16044-8880-42A4-866B-B0461C450A71}|SummerBestWebForm2.csproj|solutionrelative:program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{10E16044-8880-42A4-866B-B0461C450A71}|SummerBestWebForm2.csproj|c:\\repos\\summerbestwebform2\\components\\pages\\home.razor.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{10E16044-8880-42A4-866B-B0461C450A71}|SummerBestWebForm2.csproj|solutionrelative:components\\pages\\home.razor.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" } ], "DocumentGroupContainers": [ @@ -34,7 +18,7 @@ "DocumentGroups": [ { "DockedWidth": 200, - "SelectedChildIndex": 16, + "SelectedChildIndex": 12, "Children": [ { "$type": "Bookmark", @@ -80,82 +64,30 @@ "$type": "Bookmark", "Name": "ST:0:0:{aa2115a1-9712-457b-9047-dbb71ca2cdd2}" }, - { - "$type": "Document", - "DocumentIndex": 3, - "Title": "App.razor", - "DocumentMoniker": "C:\\Repos\\SummerBestWebForm2\\Components\\App.razor", - "RelativeDocumentMoniker": "Components\\App.razor", - "ToolTip": "C:\\Repos\\SummerBestWebForm2\\Components\\App.razor", - "RelativeToolTip": "Components\\App.razor", - "ViewState": "AgIAAC0AAAAAAAAAAAAAAAAAAAAHAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000759|", - "WhenOpened": "2025-05-29T18:24:38.258Z", - "EditorCaption": "" - }, - { - "$type": "Document", - "DocumentIndex": 5, - "Title": "Home.razor.cs", - "DocumentMoniker": "C:\\Repos\\SummerBestWebForm2\\Components\\Pages\\Home.razor.cs", - "RelativeDocumentMoniker": "Components\\Pages\\Home.razor.cs", - "ToolTip": "C:\\Repos\\SummerBestWebForm2\\Components\\Pages\\Home.razor.cs", - "RelativeToolTip": "Components\\Pages\\Home.razor.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-05-29T18:24:42.784Z", - "EditorCaption": "" - }, { "$type": "Document", "DocumentIndex": 1, - "Title": "Home.razor", - "DocumentMoniker": "C:\\Repos\\SummerBestWebForm2\\Components\\Pages\\Home.razor", - "RelativeDocumentMoniker": "Components\\Pages\\Home.razor", - "ToolTip": "C:\\Repos\\SummerBestWebForm2\\Components\\Pages\\Home.razor", - "RelativeToolTip": "Components\\Pages\\Home.razor", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000759|", - "WhenOpened": "2025-05-29T18:25:48.345Z", - "EditorCaption": "" - }, - { - "$type": "Document", - "DocumentIndex": 4, - "Title": "Program.cs", - "DocumentMoniker": "C:\\Repos\\SummerBestWebForm2\\Program.cs", - "RelativeDocumentMoniker": "Program.cs", - "ToolTip": "C:\\Repos\\SummerBestWebForm2\\Program.cs", - "RelativeToolTip": "Program.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAAEAAAAiAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-05-29T18:26:18.113Z", - "EditorCaption": "" - }, - { - "$type": "Document", - "DocumentIndex": 2, "Title": "Weather.razor", "DocumentMoniker": "C:\\Repos\\SummerBestWebForm2\\Components\\Pages\\Weather.razor", "RelativeDocumentMoniker": "Components\\Pages\\Weather.razor", "ToolTip": "C:\\Repos\\SummerBestWebForm2\\Components\\Pages\\Weather.razor", "RelativeToolTip": "Components\\Pages\\Weather.razor", - "ViewState": "AgIAAAAAAAAAAAAAAAAAABQAAAAgAAAAAAAAAA==", + "ViewState": "AgIAAAwAAAAAAAAAAAAAADwAAAAkAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000759|", - "WhenOpened": "2025-05-29T18:28:11.235Z", + "WhenOpened": "2025-05-30T07:56:59.41Z", "EditorCaption": "" }, { "$type": "Document", "DocumentIndex": 0, - "Title": "Test.razor", - "DocumentMoniker": "C:\\Repos\\SummerBestWebForm2\\Components\\Pages\\Test.razor", - "RelativeDocumentMoniker": "Components\\Pages\\Test.razor", - "ToolTip": "C:\\Repos\\SummerBestWebForm2\\Components\\Pages\\Test.razor", - "RelativeToolTip": "Components\\Pages\\Test.razor", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==", + "Title": "Error.razor", + "DocumentMoniker": "C:\\Repos\\SummerBestWebForm2\\Components\\Pages\\Error.razor", + "RelativeDocumentMoniker": "Components\\Pages\\Error.razor", + "ToolTip": "C:\\Repos\\SummerBestWebForm2\\Components\\Pages\\Error.razor", + "RelativeToolTip": "Components\\Pages\\Error.razor", + "ViewState": "AgIAAAAAAAAAAAAAAAAAAB8AAABBAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000759|", - "WhenOpened": "2025-05-29T18:28:44.014Z", + "WhenOpened": "2025-05-30T07:57:59.014Z", "EditorCaption": "" } ] diff --git a/.vs/SummerBestWebForm2/v17/DocumentLayout.json b/.vs/SummerBestWebForm2/v17/DocumentLayout.json index 192414d..1089f0c 100644 --- a/.vs/SummerBestWebForm2/v17/DocumentLayout.json +++ b/.vs/SummerBestWebForm2/v17/DocumentLayout.json @@ -3,24 +3,12 @@ "WorkspaceRootPath": "C:\\Repos\\SummerBestWebForm2\\", "Documents": [ { - "AbsoluteMoniker": "D:0:0:{10E16044-8880-42A4-866B-B0461C450A71}|SummerBestWebForm2.csproj|c:\\repos\\summerbestwebform2\\components\\pages\\home.razor||{40D31677-CBC0-4297-A9EF-89D907823A98}", - "RelativeMoniker": "D:0:0:{10E16044-8880-42A4-866B-B0461C450A71}|SummerBestWebForm2.csproj|solutionrelative:components\\pages\\home.razor||{40D31677-CBC0-4297-A9EF-89D907823A98}" + "AbsoluteMoniker": "D:0:0:{10E16044-8880-42A4-866B-B0461C450A71}|SummerBestWebForm2.csproj|c:\\repos\\summerbestwebform2\\components\\ipaddressgrabber.razor||{40D31677-CBC0-4297-A9EF-89D907823A98}", + "RelativeMoniker": "D:0:0:{10E16044-8880-42A4-866B-B0461C450A71}|SummerBestWebForm2.csproj|solutionrelative:components\\ipaddressgrabber.razor||{40D31677-CBC0-4297-A9EF-89D907823A98}" }, { "AbsoluteMoniker": "D:0:0:{10E16044-8880-42A4-866B-B0461C450A71}|SummerBestWebForm2.csproj|c:\\repos\\summerbestwebform2\\components\\pages\\weather.razor||{40D31677-CBC0-4297-A9EF-89D907823A98}", "RelativeMoniker": "D:0:0:{10E16044-8880-42A4-866B-B0461C450A71}|SummerBestWebForm2.csproj|solutionrelative:components\\pages\\weather.razor||{40D31677-CBC0-4297-A9EF-89D907823A98}" - }, - { - "AbsoluteMoniker": "D:0:0:{10E16044-8880-42A4-866B-B0461C450A71}|SummerBestWebForm2.csproj|c:\\repos\\summerbestwebform2\\components\\app.razor||{40D31677-CBC0-4297-A9EF-89D907823A98}", - "RelativeMoniker": "D:0:0:{10E16044-8880-42A4-866B-B0461C450A71}|SummerBestWebForm2.csproj|solutionrelative:components\\app.razor||{40D31677-CBC0-4297-A9EF-89D907823A98}" - }, - { - "AbsoluteMoniker": "D:0:0:{10E16044-8880-42A4-866B-B0461C450A71}|SummerBestWebForm2.csproj|c:\\repos\\summerbestwebform2\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{10E16044-8880-42A4-866B-B0461C450A71}|SummerBestWebForm2.csproj|solutionrelative:program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{10E16044-8880-42A4-866B-B0461C450A71}|SummerBestWebForm2.csproj|c:\\repos\\summerbestwebform2\\components\\pages\\home.razor.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{10E16044-8880-42A4-866B-B0461C450A71}|SummerBestWebForm2.csproj|solutionrelative:components\\pages\\home.razor.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" } ], "DocumentGroupContainers": [ @@ -30,7 +18,7 @@ "DocumentGroups": [ { "DockedWidth": 200, - "SelectedChildIndex": 13, + "SelectedChildIndex": 12, "Children": [ { "$type": "Bookmark", @@ -76,58 +64,6 @@ "$type": "Bookmark", "Name": "ST:0:0:{aa2115a1-9712-457b-9047-dbb71ca2cdd2}" }, - { - "$type": "Document", - "DocumentIndex": 2, - "Title": "App.razor", - "DocumentMoniker": "C:\\Repos\\SummerBestWebForm2\\Components\\App.razor", - "RelativeDocumentMoniker": "Components\\App.razor", - "ToolTip": "C:\\Repos\\SummerBestWebForm2\\Components\\App.razor", - "RelativeToolTip": "Components\\App.razor", - "ViewState": "AgIAAC0AAAAAAAAAAAAAAAAAAAAHAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000759|", - "WhenOpened": "2025-05-29T18:24:38.258Z", - "EditorCaption": "" - }, - { - "$type": "Document", - "DocumentIndex": 4, - "Title": "Home.razor.cs", - "DocumentMoniker": "C:\\Repos\\SummerBestWebForm2\\Components\\Pages\\Home.razor.cs", - "RelativeDocumentMoniker": "Components\\Pages\\Home.razor.cs", - "ToolTip": "C:\\Repos\\SummerBestWebForm2\\Components\\Pages\\Home.razor.cs", - "RelativeToolTip": "Components\\Pages\\Home.razor.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-05-29T18:24:42.784Z", - "EditorCaption": "" - }, - { - "$type": "Document", - "DocumentIndex": 0, - "Title": "Home.razor", - "DocumentMoniker": "C:\\Repos\\SummerBestWebForm2\\Components\\Pages\\Home.razor", - "RelativeDocumentMoniker": "Components\\Pages\\Home.razor", - "ToolTip": "C:\\Repos\\SummerBestWebForm2\\Components\\Pages\\Home.razor", - "RelativeToolTip": "Components\\Pages\\Home.razor", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000759|", - "WhenOpened": "2025-05-29T18:25:48.345Z", - "EditorCaption": "" - }, - { - "$type": "Document", - "DocumentIndex": 3, - "Title": "Program.cs", - "DocumentMoniker": "C:\\Repos\\SummerBestWebForm2\\Program.cs", - "RelativeDocumentMoniker": "Program.cs", - "ToolTip": "C:\\Repos\\SummerBestWebForm2\\Program.cs", - "RelativeToolTip": "Program.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAAEAAAAiAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-05-29T18:26:18.113Z", - "EditorCaption": "" - }, { "$type": "Document", "DocumentIndex": 1, @@ -136,9 +72,22 @@ "RelativeDocumentMoniker": "Components\\Pages\\Weather.razor", "ToolTip": "C:\\Repos\\SummerBestWebForm2\\Components\\Pages\\Weather.razor", "RelativeToolTip": "Components\\Pages\\Weather.razor", - "ViewState": "AgIAAAAAAAAAAAAAAAAAABQAAAAgAAAAAAAAAA==", + "ViewState": "AgIAAAwAAAAAAAAAAAAAADwAAAAkAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000759|", - "WhenOpened": "2025-05-29T18:28:11.235Z", + "WhenOpened": "2025-05-30T07:56:59.41Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 0, + "Title": "IPAddressGrabber.razor", + "DocumentMoniker": "C:\\Repos\\SummerBestWebForm2\\Components\\IPAddressGrabber.razor", + "RelativeDocumentMoniker": "Components\\IPAddressGrabber.razor", + "ToolTip": "C:\\Repos\\SummerBestWebForm2\\Components\\IPAddressGrabber.razor", + "RelativeToolTip": "Components\\IPAddressGrabber.razor", + "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000759|", + "WhenOpened": "2025-05-30T07:58:10.038Z", "EditorCaption": "" } ] diff --git a/ClassObj/IPAddressService.cs b/ClassObj/IPAddressService.cs new file mode 100644 index 0000000..75d1b7f --- /dev/null +++ b/ClassObj/IPAddressService.cs @@ -0,0 +1,8 @@ +namespace SummerBestWebForm2.ClassObj; + +public class IPAddressService +{ + public const string TokenName = "IPAddress"; + + public string RemoteIpAddress { get; set; } = "Not Set"; +} diff --git a/Components/App.razor b/Components/App.razor index 97f2bbb..67a8a85 100644 --- a/Components/App.razor +++ b/Components/App.razor @@ -1,4 +1,5 @@ - +@implements IDisposable +
@@ -29,14 +30,16 @@ min-height: 100vh; } -
- Request ID: @RequestId
-
+ Request ID: @RequestId
+
- Swapping to Development environment will display more detailed information about the error that occurred. + Swapping to Development environment will display more detailed information about the error that occurred.
- The Development environment shouldn't be enabled for deployed applications. - It can result in displaying sensitive information from exceptions to end users. - For local debugging, enable the Development environment by setting the ASPNETCORE_ENVIRONMENT environment variable to Development - and restarting the app. + The Development environment shouldn't be enabled for deployed applications. + It can result in displaying sensitive information from exceptions to end users. + For local debugging, enable the Development environment by setting the ASPNETCORE_ENVIRONMENT environment variable to Development + and restarting the app.
-@code{ - [CascadingParameter] - private HttpContext? HttpContext { get; set; } +@code { + [CascadingParameter] + private HttpContext? HttpContext { get; set; } - private string? RequestId { get; set; } - private bool ShowRequestId => !string.IsNullOrEmpty(RequestId); + private string? RequestId { get; set; } + private bool ShowRequestId => !string.IsNullOrEmpty(RequestId); - protected override void OnInitialized() => - RequestId = Activity.Current?.Id ?? HttpContext?.TraceIdentifier; + protected override void OnInitialized() => + RequestId = Activity.Current?.Id ?? HttpContext?.TraceIdentifier; } diff --git a/Components/Pages/Home.razor b/Components/Pages/Home.razor index 0c60611..d33c490 100644 --- a/Components/Pages/Home.razor +++ b/Components/Pages/Home.razor @@ -1,5 +1,6 @@ @rendermode InteractiveServer @inject PersistentComponentState ApplicationState +@inject ClassObj.IPAddressService IpAddressService @page "/"Loading...
+Loading...
} else { -Date | -Temp. (C) | -Temp. (F) | -Summary | -
---|---|---|---|
@forecast.Date.ToShortDateString() | -@forecast.TemperatureC | -@forecast.TemperatureF | -@forecast.Summary | -
Date | +Temp. (C) | +Temp. (F) | +Summary | +
---|---|---|---|
@forecast.Date.ToShortDateString() | +@forecast.TemperatureC | +@forecast.TemperatureF | +@forecast.Summary | +