Blazor WASM local development cannot fetch remote data - .net-5

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?

Related

ASP.NET Core 3.0 React app errors: failed to 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.

Passing Multiple Get Parameters to WebApi

I am working on a asp.net core 2.2 application. I want to pass two parameters(token and refresh token) to the asp.net core 2.2 web api to retrieve new token. When I am passing the values, i am getting an error
An unhandled exception occurred while processing the request.
AggregateException: One or more errors occurred. (Response status code does not indicate success: 404 (Not Found).)
System.Threading.Tasks.Task.Wait(int millisecondsTimeout, CancellationToken cancellationToken)
HttpRequestException: Response status code does not indicate success: 404 (Not Found).
Is this right way to pass multiple parameters and route it?
requestUrl is build as below:
string requestUrl = string.Format(Token_RefreshUserToken + "/{0}"+"/{1}", token,refreshToken);
requestUrl value is(web api controller name is 'Token'):
"Token/Refresh/eyJhbGciOiJIQrI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6InJlZnJhbmNpc0BzdXlhdpdGkuY54tIiwiZXhwIojxNTYwMzMyOTk7hCJpc3MiOiJodHRwOi8vd3d3LnNlY3WeaXR5Lm9yZyIsImF1ZCI3rdh0dHA6Ly93d3cuc2VjdXJpdHkub3JnIn0.2Iw0VS_OgMjfpgt5V27mjCuLLqzlZBgRMpYgCTEHRP88E/IDwRYkf9idsVrBhBJJ5ymS+8RrZuSBSl+wywuKCs+Bw="
Client:
Task<TokenModel> userToken = _commonHelper.RecreateUserToken(tokenModel.TokenVal, tokenModel.RefreshToken);
userToken.Wait();
public async Task<TokenModel> RecreateUserToken(string token, string refreshToken)
{
string url = string.Format(WebApiConstants.Token_RefreshUserToken + "/{0}"+"/{1}", token,refreshToken);
var statusResponse = await _ApiHelper.GetAsync(url);
tokenData = await statusResponse.Content.ReadAsAsync<TokenModel>();
return tokenData;
}
Web Api method :
[HttpGet]
[Route("Refresh/{token}/{refreshToken}")]
public async Task<TokenValue> Refresh(string token, string refreshToken){ //logic }
It seems that request containing double escape sequence caused the problem.In development mode, try to run the web api project with Kestrel instead of IIS express.
ASP.NET Core application could be hosted on variety of web servers (IIS, Kestrel, Nginx, Apache, ...). All these web servers know nothing about request filtering (and particularly enabling of double escape) which is a native IIS feature. It's a hosting concern and ASP.NET Core application should not deal with it directly. If URL like http://youserver.com/Home/Phone/+12345 will reach ASP.NET Core pipeline, plus sign will not be treated in any special way and will get to string model as + character.
When you host your application on IIS, web.config is still in use, so you could configure <requestFiltering allowDoubleEscaping="true"/> as for usual ASP.NET application.
<system.webServer>
<security>
<requestFiltering allowDoubleEscaping="true" />
</security>
If you want to host application in another Web server, you should check how it handle special characters. Kestrel will just pass such URLs as is, so you don't need to take any specific actions if hosted on Kestrel.
Refer to here

Freezer component not working in Azure Web App

https://github.com/haga-rak/Freezer
we are trying to capture a screenshot of a web page using Freezer component. everything seems working as expected locally, but when it is hosted in Azure Web API, the call is failing with below error
RemoteWorker has shutdown at Freezer.Pools.WorkerEngine.CaptureUrl(String baseUrl, TimeSpan timeOut) at Freezer.Engines.CaptureEngine.CaptureRawUrl(String baseUrl, TimeSpan timeOut) at Freezer.Core.ScreenshotHelper.FreezeTaskABytes(ScreenshotJob task) at Freezer.Core.ScreenshotJob.Freeze()

Debugging in Firefox Developer Edition yields WSFederationMessageException: ID3204

I really like Firefox Developer Edition but in the past I have found multiple issues when just trying to get it going which have often required administrator intervention at other places I've worked. The latest issue I'm running into is that when trying to log into some web application I'm debugging (named XXX.YYY) at a new client site, I get the following server error. I don't get this when I use Internet Explorer as my browser. What can I do to correct it?
Server Error in '/XXX.YYY' Application. ID3204:
WS-Federation SignIn request must specify a 'wtrealm' or 'wreply'
parameter. 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.IdentityModel.Protocols.WSFederation.WSFederationMessageException:
ID3204: WS-Federation SignIn request must specify a 'wtrealm' or
'wreply' parameter.
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:
[WSFederationMessageException: ID3204: WS-Federation SignIn request
must specify a 'wtrealm' or 'wreply' parameter.]
Microsoft.IdentityModel.Protocols.WSFederation.SignInRequestMessage..ctor(Uri
baseUrl, String realm, String reply) +271
Microsoft.IdentityModel.Protocols.WSFederation.WSFederationMessage.CreateFromNameValueCollection(Uri
baseUrl, NameValueCollection collection) +753
Microsoft.IdentityModel.Protocols.WSFederation.WSFederationMessage.TryCreateFromUri(Uri
requestUri, WSFederationMessage& fedMsg) +57
Microsoft.IdentityModel.Web.WSFederationAuthenticationModule.GetSignOutCleanupMessage(HttpRequest
request) +34
Microsoft.IdentityModel.Web.WSFederationAuthenticationModule.CanReadSignInResponse(HttpRequest
request, Boolean onPage) +188
Microsoft.IdentityModel.Web.WSFederationAuthenticationModule.OnAuthenticateRequest(Object
sender, EventArgs args) +85
System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
+142 System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +92
Version Information: Microsoft .NET Framework Version:4.0.30319;
ASP.NET Version:4.6.1590.0
I found a solution! It turns out the issue was that Firefox Developer Edition by default will not authenticate with the Windows NT LAN Manager (NTLM) protocol the way IE does out of the box. So, you have to configure it to do so:
Open Firefox Developer Edition and type in about:config in the address bar. You will be
prompted with a warning. Click the "I accept the risk!" button.
Use the ‘Search’ field at the top of the browser just below the address bar to find the network.automatic-ntlm-auth.trusted-uris configuration parameter.
Double-click the name of the configuration parameter, or right-click it and select Modify.
Enter the URLs of the sites you're having trouble authenticating to. Use the format:
https://localhost
There is no need to specify a port number nor a path to any particular page because authentication works on a site by site basis. You can list more than one site by comma-delimiting them. Now, my XXX.YYY web app which I was trying to debug locally runs and authenticates just fine!

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