At the moment ASP.NET Core doesn't save proper values in web.config to bind site to IIS, see this:
<aspNetCore processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%"
stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout"
forwardWindowsAuthToken="false"/>
This variable are set only on publish. But I prefer to debug my site using following URLs:
http://localhost/zerosite-admin
http://localhost/zerosite-api
Is it possible?
Any best practices of how you develop are welcome!
Related
I have .NET Core 3.1 API which is deployed in Azure web application service. I had trouble running the application in Azure because of the error 500.37 ANCM Failed to Start Within Startup Time Limit. I managed to solve this issue by increasing startupTimeLimit in web.config (as you can see below).
But Now, when I'm running 2 instances in Azure web app service. One of the instances works just fine but the other one still has the same error.
Any ideas on how How to set startupTimeLimit for multiple instances in IIS?
web.config
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<!-- To customize the asp.net core module uncomment and edit the following section.
For more info see https://go.microsoft.com/fwlink/?linkid=838655 -->
<system.webServer>
<httpProtocol>
<customHeaders>
<remove name="X-Powered-By" />
</customHeaders>
</httpProtocol>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath="dotnet" arguments=".\Clients.Api.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" startupTimeLimit="180" hostingModel="inprocess" >
</aspNetCore>
</system.webServer>
</configuration>
Edit:
I used azure web app Scale out (App Service plan) to increase the running instance to 2.
We solved this solution by increasing the startupTimeLimit to 300
<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<location>
<system.webServer>
<aspNetCore xdt:Transform="SetAttributes(startupTimeLimit)" startupTimeLimit="300">
</aspNetCore>
</system.webServer>
</location>
</configuration>
Finally I was able to fix this error.
It is a configuration error (.net core configuration). Azure App Services need an additional configuration of the project when it is in .net core 3.1.
The solution is:
In project file (asp.net or web api project) (*.proj) you have to place the following line just below TargetFramework:
<AspNetCoreHostingModel>OutOfProcess</AspNetCoreHostingModel>
Final *.proj file would be something like this :
<Project Sdk="Microsoft.NET.Sdk.Web"> <PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<AspNetCoreHostingModel>OutOfProcess</AspNetCoreHostingModel>
<UserSecretsId>my-secrets-go-here</UserSecretsId>
<Version>1.1.0.0</Version>
<Authors>me</Authors>
<Company>TheCompany</Company>
<Platforms>AnyCPU;x64</Platforms>
</PropertyGroup>
...
</Project>
And that's it. After adding those changes and uploading a new version on your Azure App Service the application is going to be executed without errors (unless there's something else related to your code).
I was able to replicate this error by executing my project directly on IIS from my local, when you do that VS opens the web browser but the web page is never loaded.
Started getting this error when running my .net core 3.1 application on production. The error occurs immediately after updating the application. However, for me, running iisreset on cmd was enough to solve the error.
if application work perfect on development machine and this error exist on your production server that is not connected to internet
check event log and find if you have any error like this:
Failed extract of third-party root list from auto update cab at
you need just update server certificates
with Online option : connect server to internet
with Offline option: follow this guide
We deployed our .net core application, and it is not working. I tried to debug by enabling stdoutLog in web.config:
<aspNetCore processPath="dotnet" arguments=".\myApp.dll" stdoutLogEnabled="true" stdoutLogFile="C:\inetpub\wwwroot\myAppQA\logs">
I also created the logs folder. I used the absolute path after trying relative path, too.
The log file was created 2 times only, and very inconsistently, and finally stopped being created at all. How can I make logging work?
I have deployed a new application that contains a Web Project which communicates with a Web Core API.
I have used this link as a reference to set it up;
https://learn.microsoft.com/en-us/aspnet/core/publishing/iis
IIS has been set up for a while on this test server, so some the steps did not need to be repeated.
In IIS if I browse the Web API is launches as follows.
But if I do likewise for the web project that uses it, I am getting this error:
Response status code does not indicate success: 404 (Not Found) for a simple get call to the Web API.
What should I be considering to fix this?
Multiple possibilities I see
You just browsed to the root url and you do not have any default page setup in IIS . To see the Web API,browse to the webapi url you have specified in your route.config file.
Default route will be like this based on your routing.Could you browse to
http://testweb.sherrygreengrp.com/api/<controller>
You do not have the Windows Server Hosting Bundle
Install the .NET Core Windows Server Hosting bundle on the hosting
system. The bundle will install the .NET Core Runtime, .NET Core
Library, and the ASP.NET Core Module. The module creates the
reverse-proxy between IIS and the Kestrel server. Note: If the system
doesn't have an Internet connection, obtain and install the Microsoft
Visual C++ 2015 Redistributable before installing the .NET Core
Windows Server Hosting bundle
ASP.NET CORE Module correctly configured .Do you have this setting in your web.config
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath="%LAUNCHER_PATH%"
arguments="%LAUNCHER_ARGS%"
stdoutLogEnabled="false"
stdoutLogFile=".\logs\stdout" />
</system.webServer>
</configuration>
I found that the URI I needed on the deployment server needed to have the name of my application, whilst in development this was not needed. Once I made that correction it worked fine.
I have a classic asp application inside a .NET 4.0 application. I have set the default document to login.asp, but it does not automatically redirect to it. The entire application functions fine though and even displays the login.asp correctly if I browse to it.
The default document section in web.config is as below:
<defaultDocument>
<files>
<clear />
<add value="login.asp" />
<add value="index.html" />
<add value="default.aspx" />
<add value="Default.htm" />
<add value="Default.asp" />
<add value="index.htm" />
<add value="iisstart.htm" />
</files>
</defaultDocument>
I have looked at other similar questions on this site but were not of much help.
I finally found the issue was because the asp application was assigned to an app pool in classic mode using .NET Framework 4.0.
Once I changed the app pool to use .NET Framework 2.0 (with managed pipeline in classic mode), the default document started to work too!
Make sure you have Read/Write Feature Delegation enabled for Default Document:
DefaultDocument does not redirect to the file (i.e. URL is not changed). It acts similar to Server.Transfer function — executes the file when root URL (http://sitename/) is requested. Probably, your login.asp executed but it has instructions to redirect logged-in users to a different page, or display the different content to them.
Make sure the response is not cached. Clear cache and cookies and try again.
I had this problem today with a brand new asp.net site deployed to Azure. I tried messing with IIS and my web.config included
<defaultDocument enabled="true">
<files>
<clear />
<add value="Index.html" />
</files>
</defaultDocument>
Turns out my problem was that the File > New Project wizard uses .NET 4.5.2 by default, and that isn't fully supported yet in Azure. I recompiled using .NET 4.5 as the target and everything works now!
I'm having an issue with CruiseControl.net where the web dashboard just won't work in IIS. I have tried switching ASP.Net between 64 and 32 bit modes and reinstalling cruise control, but nothing seems to work. Has anyone else had issues with CruiseControl.Net on 64 bit platforms?
Cheers,
Jamie
[Edit]
Thought I should clarify, I am getting a 404 error when I try access the website. I am using the correct address because it asks for authentication. The .aspx handler is working because I don't see the default.aspx page from the ccnet directory.
[Edit2]
I am using the default web.config that comes with ccnet, but here it is:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<!-- Change this if (for example) you want to keep your dashboard config file under source control -->
<add key="DashboardConfigLocation" value="dashboard.config" />
</appSettings>
<system.web>
<httpHandlers>
<!-- Yes, we are overriding .aspx - don't delete this! We are using .aspx since we know it is already bound to ASP.NET. In future we might use a
different extension so that people can add their own ASP.NET pages if they want to, but we should make sure in that case to change how
URLs are created -->
<add verb="*" path="*.aspx" type="ThoughtWorks.CruiseControl.WebDashboard.MVC.ASPNET.HttpHandler,ThoughtWorks.CruiseControl.WebDashboard"/>
<add verb="*" path="*.xml" type="ThoughtWorks.CruiseControl.WebDashboard.MVC.ASPNET.HttpHandler,ThoughtWorks.CruiseControl.WebDashboard"/>
</httpHandlers>
<compilation defaultLanguage="c#" debug="true" />
<customErrors mode="RemoteOnly" />
<authentication mode="Windows" />
<!-- APPLICATION-LEVEL TRACE LOGGING
Application-level tracing enables trace log output for every page within an application.
Set trace enabled="true" to enable application trace logging. If pageOutput="true", the
trace information will be displayed at the bottom of each page. Otherwise, you can view the
application trace log by browsing the "trace.axd" page from your web application
root.
-->
<trace
enabled="false"
requestLimit="10"
pageOutput="true"
traceMode="SortByTime"
localOnly="true"
/>
<sessionState mode="InProc" stateConnectionString="tcpip=127.0.0.1:42424" sqlConnectionString="data source=127.0.0.1;user id=sa;password="
cookieless="false" timeout="20" />
<globalization requestEncoding="utf-8" responseEncoding="utf-8" />
</system.web>
It seems I needed to enable Web Service Extensions for ASP.Net. I'm still not getting an ASP.Net tab in the cruise control website properties, but it is working.
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727> or C:\WINDOWS\Microsoft.NET\Framework64\v2.0.50727> for 64 bit
Type aspnet_regiis.exe – i
ASP.NET will register itself and show up in Web Service Extensions
Clarify a bit, does the web-dashboard function incorrectly? Does it not show up at all?
The webdashboard uses Nvelocity, not ASP.NET WebForms, so you have to register a custom HTTPHandler in the Web.config for it to work.
<add verb="*" path="*.aspx" type="ThoughtWorks.CruiseControl.WebDashboard.MVC.ASPNET.HttpHandler,ThoughtWorks.CruiseControl.WebDashboard"/>
Post up your web.config.
Since you just want to know whether it works... it does.
I'm running it on a 64-bit Windows Server 2008 without a problem.
So now we've established it works, perhaps you can describe your issue in more detail?
Could not comment, I wanted to add this to the aswer to Adam:
I had to use this command in CMD for Win2008 x64
"C:\WINDOWS\Microsoft.NET\Framework64\v2.0.50727\aspnet_regiis.exe" -s "W3SVC/1/ROOT/ccnet"