ASP.NET Core 3.0 React app errors: failed to proxy - proxy

(FYI, this is my first Microsoft project of any type and I am not familiar with technologies like proxy servers, etc so my description of the issues may not be the greatest).
I have been working on an ASP.NET Core 3.0 (preview) React app for the past month or so without any issues. Last Friday I started updating the web api to pull data from the database for charting in the UI. This week I picked up where I left off but my project now errors on start up.
Events that occurred since it was last working... I installed and used Fiddler briefly on Friday to run some api calls but then switched over to Postman. Everything was fine and I left everything running (may have closed Fiddler, don't recall). This week I made some database changes (set a multi-column index via the Fluent API) and added more data to the database (SQL Server). I then proceeded to continue working on the web api starting with a request in Postman but it errored. I went to view the app UI but that errored as well.
After two days of googling/troubleshooting I think the most useful error given is the one below. From the error messages, I do not know where port 50158 is coming from. The app loads at https://localhost:44398/. I performed a search for "50158" on my whole computer and only found it in IIS log files. Here are the first 4 lines in each log file. The rest of each file mentions only '44398'.
Successfully registered URL "https://localhost:44398/" for site "MyAwesomeApplication" application "/"
Successfully registered URL "http://localhost:50158/" for site "MyAwesomeApplication" application "/"
Registration completed for site "MyAwesomeApplication"
Request started: "GET" https://localhost:44398/
I found some posts on SO that mention Fiddler causing similar issues to this error, however, they have not helped me resolve the problem.
Some posts on SO mention unchecking "Automatically detect settings" on the Internet Properties > Connections > LAN settings. It is indeed unchecked on my computer.
Some things I have tried:
I created a new project using all the same specifications but get the same errors.
I completely removed Fiddler.
I reverted the latest database changes.
Where is this problem coming from and what do I need to do to fix it?
Please let me know if more (and what) info would be useful. This issue is out of my current knowledgebase.
#
Error message (sorry, not sure how to format it nicely)
An unhandled exception occurred while processing the request.
SocketException: No connection could be made because the target machine actively refused it.
System.Net.Http.ConnectHelper.ConnectAsync(string host, int port, CancellationToken cancellationToken)
HttpRequestException: No connection could be made because the target machine actively refused it.
System.Net.Http.ConnectHelper.ConnectAsync(string host, int port, CancellationToken cancellationToken)
HttpRequestException: Failed to proxy the request to http://localhost:50158/, because the request to the proxy target failed. Check that the proxy target server is running and accepting requests to http://localhost:50158/.
The underlying exception message was 'No connection could be made because the target machine actively refused it.'.Check the InnerException for more details.
Microsoft.AspNetCore.SpaServices.Extensions.Proxy.SpaProxy.PerformProxyRequest(HttpContext context, HttpClient httpClient, Task baseUriTask, CancellationToken applicationStoppingToken, bool proxy404s)
Stack Query Cookies Headers Routing
SocketException: No connection could be made because the target machine actively refused it.
System.Net.Http.ConnectHelper.ConnectAsync(string host, int port, CancellationToken cancellationToken)
Show raw exception details
HttpRequestException: No connection could be made because the target machine actively refused it.
System.Net.Http.ConnectHelper.ConnectAsync(string host, int port, CancellationToken cancellationToken)
System.Threading.Tasks.ValueTask.get_Result()
System.Net.Http.HttpConnectionPool.ConnectAsync(HttpRequestMessage request, bool allowHttp2, CancellationToken cancellationToken)
System.Threading.Tasks.ValueTask.get_Result()
System.Net.Http.HttpConnectionPool.CreateHttp11ConnectionAsync(HttpRequestMessage request, CancellationToken cancellationToken)
System.Threading.Tasks.ValueTask.get_Result()
System.Net.Http.HttpConnectionPool.GetHttpConnectionAsync(HttpRequestMessage request, CancellationToken cancellationToken)
System.Threading.Tasks.ValueTask.get_Result()
System.Net.Http.HttpConnectionPool.SendWithRetryAsync(HttpRequestMessage request, bool doRequestAuth, CancellationToken cancellationToken)
System.Net.Http.HttpClient.FinishSendAsyncUnbuffered(Task sendTask, HttpRequestMessage request, CancellationTokenSource cts, bool disposeCts)
Microsoft.AspNetCore.SpaServices.Extensions.Proxy.SpaProxy.PerformProxyRequest(HttpContext context, HttpClient httpClient, Task baseUriTask, CancellationToken applicationStoppingToken, bool proxy404s)
Show raw exception details
HttpRequestException: Failed to proxy the request to http://localhost:50158/, because the request to the proxy target failed. Check that the proxy target server is running and accepting requests to http://localhost:50158/. The underlying exception message was 'No connection could be made because the target machine actively refused it.'.Check the InnerException for more details.
Microsoft.AspNetCore.SpaServices.Extensions.Proxy.SpaProxy.PerformProxyRequest(HttpContext context, HttpClient httpClient, Task baseUriTask, CancellationToken applicationStoppingToken, bool proxy404s)
Microsoft.AspNetCore.Builder.SpaProxyingExtensions+<>c__DisplayClass2_0+<b__0>d.MoveNext()
Microsoft.AspNetCore.Builder.RouterMiddleware.Invoke(HttpContext httpContext)
IdentityServer4.Hosting.IdentityServerMiddleware.Invoke(HttpContext context, IEndpointRouter router, IUserSession session, IEventService events)
IdentityServer4.Hosting.MutualTlsTokenEndpointMiddleware.Invoke(HttpContext context, IAuthenticationSchemeProvider schemes)
Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context)
IdentityServer4.Hosting.BaseUrlMiddleware.Invoke(HttpContext context)
Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context)
Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore.MigrationsEndPointMiddleware.Invoke(HttpContext context)
Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore.DatabaseErrorPageMiddleware.Invoke(HttpContext httpContext)
Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore.DatabaseErrorPageMiddleware.Invoke(HttpContext httpContext)
Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.Invoke(HttpContext context)
Show raw exception details

For me it had to do with cookie size being too large for development server.
I was working on a React client app served by ASP.NET Core 3.1 with Keycloak as an OP.
Fresh React templates did also suddenly not start anymore.
Clearing cookies made my projects start again.
ref:
https://techcommunity.microsoft.com/t5/iis-support-blog/400-error-in-asp-net-core-project-because-of-8-kb-cookie-limit/bc-p/1308877#M431

I decided to try and roll all the NuGet packages to a previous version (v3.0.0-preview5-19227). My app now functions as expected. Looking at the download page for dotnet-core, it looks like v3.0.0-preview6 was released on 06/12. I started my project way before that so maybe I updated the packages and just don't recall??? Either way, time to make up for 2 days lost.

Related

Blazor WASM local development cannot fetch remote data

I am using Blazor WASM .NET 5.0.4 and a local ASP.NET 5 Server.
I set the local ASP.NET server to local IP (in this case 192.168.188.31) with a specific port, in my case 44302.
On Blazor WASM I set the base address to said IP in Program.cs.
Now when I start up the Blazor WASM on my local PC I can fetch the sample weather data from the ASP.NET server just fine.
However if I visit the Blazor WASM site from an external device, such like my mobile phone, I can view all the pages like I would on PC, but as soon as I try to fetch the sample weather data, I just get a Loading... message and after some time I get a time out error: net::ERR_CONNECTION_TIMED_OUT with stacktrace
blazor.webassembly.js:1 crit: Microsoft.AspNetCore.Components.WebAssembly.Rendering.WebAssemblyRenderer[100]
Unhandled exception rendering component: TypeError: Failed to fetch
System.Net.Http.HttpRequestException: TypeError: Failed to fetch
at System.Net.Http.BrowserHttpHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
at System.Net.Http.HttpClient.SendAsyncCore(HttpRequestMessage request, HttpCompletionOption completionOption, Boolean async, Boolean emitTelemetryStartStop, CancellationToken cancellationToken)
at System.Net.Http.Json.HttpClientJsonExtensions.<GetFromJsonAsyncCore>d__9`1[[Client.Pages.FetchData.WeatherForecast[], Client, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]].MoveNext()
at Client.Pages.FetchData.OnInitializedAsync() in D:\Dev\C#\meine Projekte\ProjectNextGen\ClientSide\Client\Pages\FetchData.razor:line 43
at Microsoft.AspNetCore.Components.ComponentBase.RunInitAndSetParametersAsync()
at Microsoft.AspNetCore.Components.RenderTree.Renderer.GetErrorHandledTask(Task taskToHandle)
First I though that I made some technical errors, but this behavior can be seen with a fresh Blazor WASM project as well.
What do I have to do in order to fetch data from an external device such as my phone correctly?

Certificate error invoking gRPC service with HTTPS under .Net 5: UntrustedRoot

I am trying to HTTPS connect my gRPC client and service, both running under .Net 5 on my local Windows 10 machine. Now I am getting this certificate error and not sure how to fix it:
Status(StatusCode=\"Internal\", Detail=\"Error starting gRPC call.
HttpRequestException: The SSL connection could not be established, see inner exception.
AuthenticationException: The remote certificate is invalid because of errors in the certificate chain: UntrustedRoot\", DebugException=\"System.Net.Http.HttpRequestException: The SSL connection could not be established, see inner exception.\r\n
---> System.Security.Authentication.AuthenticationException: The remote certificate is invalid because of errors in the certificate chain: UntrustedRoot\r\n at System.Net.Security.SslStream.SendAuthResetSignal(ProtocolToken message, ExceptionDispatchInfo exception)\r\n at System.Net.Security.SslStream.ForceAuthenticationAsync[TIOAdapter](TIOAdapter adapter, Boolean receiveFirst, Byte[] reAuthenticationData, Boolean isApm)\r\n at System.Net.Http.ConnectHelper.EstablishSslConnectionAsyncCore(Boolean async, Stream stream, SslClientAuthenticationOptions sslOptions, CancellationToken cancellationToken)\r\n --- End of inner exception stack trace ---\r\n at System.Net.Http.ConnectHelper.EstablishSslConnectionAsyncCore(Boolean async, Stream stream, SslClientAuthenticationOptions sslOptions, CancellationToken cancellationToken)\r\n at System.Net.Http.HttpConnectionPool.ConnectAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)\r\n at System.Net.Http.HttpConnectionPool.GetHttp2ConnectionAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)\r\n at System.Net.Http.HttpConnectionPool.SendWithRetryAsync(HttpRequestMessage request, Boolean async, Boolean doRequestAuth, CancellationToken cancellationToken)\r\n at System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)\r\n at Grpc.Net.Client.Internal.GrpcCall`2.RunCall(HttpRequestMessage request, Nullable`1 timeout)\")
I tried to install a dev certificate by running the commend below, but it seems one have already exist:
And it appears that I have this cert under both of my Personal and Trusted Root stores
I do noticed however, that the cert exists in my stores is "IIS Express Development Certificate", instead of "ASP.NET Core HTTPS development certificate". Dose that matter? If so, how do I get the correct cert installed? If not, what else am I missing?
In case anyone interested - in my case, this was caused by the fact that gRPC hosting is not supported by IIS under my current build level of Windows. While I was waiting for MS to complete a solution, I just added the following to my gRPC client side:
var httpHandler = new HttpClientHandler();
httpHandler.ServerCertificateCustomValidationCallback = HttpClientHandler.DangerousAcceptAnyServerCertificateValidator;
var channel = GrpcChannel.ForAddress(ServerAddress, new GrpcChannelOptions { HttpHandler = httpHandler });
As you can see, this code is TEMPERARY and not meant for production. Microsoft has recently said that the support has been included in the operation system's build 20241 or later, which I am planning to test in the coming weeks.

Unable to find debuggable browser tab

I am working with a Blazor wasm project. I have been trying to start the debugger browser dev tools with blazor and i keep getting an error
I hit
Debugging hotkey: Shift+Alt+D (when application has focus)
Which gives me
Unable to find debuggable browser tab
Could not get a list of browser tabs from http://localhost:9222/json. Ensure Chrome is running with debugging enabled.
Resolution
Close all Chrome instances, then press Win+R and enter the following:
"%programfiles(x86)%\Google\Chrome\Application\chrome.exe" --remote-debugging-port=9222 http://localhost:52878/
... then use that new tab for debugging.
Underlying exception: System.Net.Http.HttpRequestException: No
connection could be made because the target machine actively refused
it. ---> System.Net.Sockets.SocketException (10061): No connection
could be made because the target machine actively refused it. at
System.Net.Http.ConnectHelper.ConnectAsync(String host, Int32 port,
CancellationToken cancellationToken) --- End of inner exception
stack trace --- at
System.Net.Http.ConnectHelper.ConnectAsync(String host, Int32 port,
CancellationToken cancellationToken) at
System.Net.Http.HttpConnectionPool.ConnectAsync(HttpRequestMessage
request, Boolean allowHttp2, CancellationToken cancellationToken)
at
System.Net.Http.HttpConnectionPool.CreateHttp11ConnectionAsync(HttpRequestMessage
request, CancellationToken cancellationToken) at
System.Net.Http.HttpConnectionPool.GetHttpConnectionAsync(HttpRequestMessage
request, CancellationToken cancellationToken) at
System.Net.Http.HttpConnectionPool.SendWithRetryAsync(HttpRequestMessage
request, Boolean doRequestAuth, CancellationToken cancellationToken)
at System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage
request, CancellationToken cancellationToken) at
System.Net.Http.DiagnosticsHandler.SendAsync(HttpRequestMessage
request, CancellationToken cancellationToken) at
System.Net.Http.HttpClient.FinishSendAsyncUnbuffered(Task1 sendTask,
HttpRequestMessage request, CancellationTokenSource cts, Boolean
disposeCts) at System.Net.Http.HttpClient.GetStringAsyncCore(Task1
getTask) at
Microsoft.AspNetCore.Builder.BlazorMonoDebugProxyAppBuilderExtensions.GetOpenedBrowserTabs(String
debuggerHost) at
Microsoft.AspNetCore.Builder.BlazorMonoDebugProxyAppBuilderExtensions.DebugHome(HttpContext
context)
I shut down all chome browser and run the command instructed but it doesnt help i get the same error
I suspect the issue is related to the fact that as soon as chrome starts it spawns a large number of other chromes i can see them
I tried killing them all so there was no chrome running then firing off the command that didnt work either because again i ended up with like 10 chromes running.
How do you find the debugged browser tab with blazor?
I am using Blazor webassembly, .NET Core 5.0.100-preview.7.20366.6 ; Google Chrome version 84.0.4147.105 (Official Build) (64-bit); Visual Studio 2019 preview Community edition.
You will see message like this
Unable to find debuggable browser tab
Could not get a list of browser tabs from http://127.0.0.1:9222/json. Ensure your browser is running with debugging enabled.
Resolution
If you are using Google Chrome for your development, follow these instructions:
Press Win+R and enter the following:
chrome --remote-debugging-port=9222 --user-data-dir="C:\Users\donhuvy\AppData\Local\Temp\blazor-chrome-debug" https://localhost:44376/
If you are using Microsoft Edge (80+) for your development, follow these instructions:
Press Win+R and enter the following:
msedge --remote-debugging-port=9222 --user-data-dir="C:\Users\donhuvy\AppData\Local\Temp\blazor-edge-debug" --no-first-run https://localhost:44376/
This should launch a new browser window with debugging enabled..
Let's do like the guide.
(1) Copy these text
chrome --remote-debugging-port=9222 --user-data-dir="C:\Users\donhuvy\AppData\Local\Temp\blazor-chrome-debug" https://localhost:44376/
(2) Press Windows+R, paste by Ctrl+V , then, press Enter
(3) Go to http://127.0.0.1:9222/json , you will see
this is debug information.
(4) When you press Shift+Alt+D

SignalR - WebSockets to ServerSentEvents - Issue

I'm using SignalR v2.0 on Windows Server 2012 with IIS8,
I enabled WebSockets on the server by the following article,
http://www.iis.net/learn/get-started/whats-new-in-iis-8/iis-80-websocket-protocol-support
But signalR first tries to work with websockets, and right after that change the transport to serverSentEvents
The negotiation response is TryWebSockets=True
The response header of connecting with websockets is
Upgrade: Websocket
X-Content-Type-Options: nosniff
Connection: Upgrade
with status code 101 (Switching Protocols)
All my solution's projects are using .NET4.5
I also saw the following message in the Event Viewer (not sure if it is relevant)
Exception information:
Exception type: InvalidOperationException
Exception message: Unrecognized user identity. The user identity cannot change during an active SignalR connection. at
Microsoft.AspNet.SignalR.PersistentConnection.GetConnectionId(HostContext
context, String connectionToken) at
Microsoft.AspNet.SignalR.PersistentConnection.ProcessRequest(HostContext
context) at
Microsoft.AspNet.SignalR.Hubs.HubDispatcher.ProcessRequest(HostContext
context) at
Microsoft.AspNet.SignalR.PersistentConnection.ProcessRequest(IDictionary`2
environment) at
Microsoft.AspNet.SignalR.Owin.Middleware.HubDispatcherMiddleware.Invoke(IOwinContext
context) at
Microsoft.Owin.Mapping.MapMiddleware.d__0.MoveNext()
--- End of stack trace from previous location where exception was thrown --- at
Microsoft.Owin.Host.SystemWeb.IntegratedPipeline.StageAsyncResult.End(IAsyncResult
ar) at
Microsoft.Owin.Host.SystemWeb.IntegratedPipeline.IntegratedPipelineContext.EndFinalWork(IAsyncResult
ar) at
System.Web.HttpApplication.AsyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step,
Boolean& completedSynchronously)
what is wrong ?
You can't change the user's identity during an active connection. It means you're probably doing something like logging in a user without stopping the connection first.

Whats the URL from the Microsoft Dynamics CRM Server? [closed]

Closed. This question is off-topic. It is not currently accepting answers.
Want to improve this question? Update the question so it's on-topic for Stack Overflow.
Closed 10 years ago.
Improve this question
Today I installed the Microsoft Dynamics CRM on my Windows Server 2008 r2.
Everything was fine, but now I can't find the Link to my Hompage.
Can somebody of you tell me the default URL from the Microsoft Dynamics CRM? I just installed the 90 day free Trial version of it.
When I type in my browser: http://localhost/ then I get the Error:
HTTP Error 401.2 - Unauthorized
You are not authorized to view this page due to invalid authentication headers.
and here are some Informations about my Server:
Detailed Error Information
Module IIS Web Core
Notification AuthenticateRequest
Handler StaticFile
Error Code 0x80070005
Requested URL `http://localhost:80/`
Physical Path C:\inetpub\wwwroot
Logon Method Not yet determined
Logon User Not yet determined
How can I fix that?
If it would be fine, I think, I could enter the URL in my webbrowser and the typical page from the CRM comes?
I use Internet Explorer. And I already have the Administrator rights on my Server.
EDIT: Ok, the Problem with Localhost changed. When I type in Localhost now, i came to the IIS website. But that doesn't helped me a lot. So, what I've done was: I added the Windows authentication to the Server Role from the IIS Server. I found it in the Security part.
But the problem with the URL from CRM is already here.
EDIT EDIT: I found out, that I have the Port 5555 for the CRM. So, when I write in the Internet Explorer: http://localhost:5555/ then appears a very long and complex Error.
Server Error in '/' Application.
--------------------------------------------------------------------------------
Caller does not have enough privilege to set CallerOriginToken to the specified value.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: Microsoft.Crm.CrmException: Caller does not have enough privilege to set CallerOriginToken to the specified value.
Source Error:
An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.
Stack Trace:
[CrmException: Caller does not have enough privilege to set CallerOriginToken to the specified value.]
Microsoft.Crm.Extensibility.ExternalMessageDispatcher.VerifyCallerOrigin(ExecutionContext context) +260
Microsoft.Crm.Extensibility.ExternalMessageDispatcher.Execute(String messageName, Int32 primaryObjectTypeCode, Int32 secondaryObjectTypeCode, PropertyBag fields, CorrelationToken correlationToken, CallerOriginToken originToken, UserAuth userAuth, Guid callerId) +724
Microsoft.Crm.Sdk.RequestBase.Process(Int32 primaryObjectTypeCode, Int32 secondaryObjectTypeCode, CorrelationToken correlationToken, CallerOriginToken originToken, UserAuth userAuth, Guid callerId) +149
Microsoft.Crm.Sdk.RequestBase.Process(CorrelationToken correlationToken, CallerOriginToken originToken, UserAuth userAuth, Guid callerId) +183
Microsoft.Crm.Sdk.CrmServiceInternal.Execute(RequestBase request, CorrelationToken correlationToken, CallerOriginToken originToken, UserAuth userAuth, Guid callerId) +465
Microsoft.Crm.Sdk.InProcessCrmService.Execute(Object request) +2688
Microsoft.Crm.Application.Platform.ServiceCommands.PlatformCommand.ExecuteInternal() +368
Microsoft.Crm.Application.Platform.DataSource.RetrieveAvailableLanguages() +40
Microsoft.Crm.Application.Utility.ApplicationLanguage.get_AvailableLanguages() +220
Microsoft.Crm.Application.Controls.AppUIPage.get_AvailableLanguages() +9
Microsoft.Crm.Application.Controls.AnonymousPage.OnInit(EventArgs e) +25
Microsoft.Crm.Application.Web.Pages.ErrorHandlerPage.OnInit(EventArgs e) +211
System.Web.UI.Control.InitRecursive(Control namingContainer) +143
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1477
--------------------------------------------------------------------------------
Version Information: Microsoft .NET Framework Version:2.0.50727.5466; ASP.NET Version:2.0.50727.5456
EDIT: Now it works finaly. The Problem was, that my Account wasn't in the Privacy User Group. I found it on this very helpful blog:
Link 1
Link 2
Link 3
Sorry, I can't post more than 1 link. So I had to do it in Code. Hope this helps somebody who has the same problem.
The url is nice, check if you have another application in port 80. Try set windows authentication in iis, see this. Verify also the access to AD.
You'd probably want to register the CRM server on a different port (we use 5555 for instance), especially if it's for development and not not to be exposed to a customer.
And to answer your question. The address is as follows. Suppose that you've registered two organizations: monkey and donkey.
http://localhost:5555/monkey
http://localhost:5555/donkey
And the discovery etc. services are as follows (for monkey on default port).
http://localhost:80/XRMServices/2011/Discovery.svc
http://localhost:80/CRM-Konsulterna/XRMServices/2011/Organization.svc
http://localhost:80/CRM-Konsulterna/XRMServices/2011/OrganizationData.svc
You need to keep in mind two things (which you probably know of already).
1. Port 80 doesn't need to be specified explicitly, nor does the protocol.
2. Localhost will only work if you're in fact on the server (otherwise, specify the IP).

Resources