HTTP Error 405.0 - Method Not Allowed
Quickly resolve the HTTP Error 405.0 - Method Not Allowed in the Nodinite Web Client and WebAPI. This guide explains why the error occurs and provides actionable steps to fix it, ensuring seamless editing and management of your resources.
✅ Step-by-step solution for 405 errors in Web Client and WebAPI
✅ Remove WebDAV conflicts in IIS for reliable updates and deletes
✅ Diagnose and fix verb restrictions and handler mapping issues
✅ Visual examples and configuration tips for fast troubleshooting
What is HTTP Error 405?
HTTP Error 405.0 - Method Not Allowed occurs when a web server receives a valid HTTP request but the HTTP verb (method) used is not permitted for the requested resource. For example:
- Attempting to PUT or DELETE when only GET and POST are allowed
- Sending a POST request to a resource that only accepts GET
- Using PATCH when the endpoint doesn't support it
In Nodinite Web Client and WebAPI, 405 errors typically occur when:
- Editing resources (PUT requests) - Updating Monitor Views, Alarm Plugins, or other configuration
- Deleting resources (DELETE requests) - Removing entities from the system
- Creating resources (POST requests) - Adding new configurations
Common HTTP Verbs in Nodinite
| HTTP Verb | Purpose | Example in Nodinite |
|---|---|---|
| GET | Retrieve data | Loading Monitor Views, reading logs |
| POST | Create new resource | Adding new Alarm Plugin, creating Monitor View |
| PUT | Update existing resource | Editing Monitor View configuration |
| DELETE | Remove resource | Deleting an Alarm Plugin entry |
| PATCH | Partial update | Updating specific fields in a configuration |
Diagnosing the Issue
Before applying fixes, identify the root cause of the 405 error:
Step 1: Identify the HTTP Verb
Check which HTTP verb is being blocked. In the browser developer tools (F12):
- Open Network tab
- Reproduce the error (e.g., click Save on an edited resource)
- Look for the failed request (usually red)
- Check the Method column - is it PUT, DELETE, POST, or PATCH?
- Click the request and view Headers → Response Headers for more details
Step 2: Check IIS Failed Request Logs
If detailed error information is not visible in the browser:
- Open IIS Manager
- Navigate to your site (e.g., Default Web Site → Nodinite)
- Enable Failed Request Tracing (if not already enabled)
- Reproduce the 405 error
- Review the trace logs at
C:\inetpub\logs\FailedReqLogFiles\
Look for error details like:
ModuleName: WebDAVModule
Notification: EXECUTE_REQUEST_HANDLER
HttpStatus: 405
HttpReason: Method Not Allowed
HttpSubStatus: 0
Step 3: Review Windows Event Viewer
Check for IIS-related errors:
- Open Event Viewer (Windows key + R →
eventvwr.msc) - Navigate to Windows Logs → Application
- Filter for Source: IIS or Source: ASP.NET
- Look for warnings or errors matching your timestamp
Information
Most Common Cause: WebDAV Interference
If WebDAV is installed and you receive a 405 error when editing (Update/Delete) resources in the WebAPI or WebClient, follow the solution below. You can apply this fix to the entire Web Site (usually Default Web Site) or to each Nodinite Application within IIS.
Affected Components:
Tip
Quick Fix: In 90% of cases, removing WebDAV from IIS Modules and Handler Mappings resolves 405 errors in Nodinite. See Solution 1: Remove WebDAV below.
Example error message as shown in the WebClient

Example: Unknown error message in the Web Client when 405 occurs.
Full error message

Example: Full error message from WebDAV module in IIS.
Solutions
Solution 1: Remove WebDAV (Most Common)
Why this fixes 405 errors: WebDAV (Web Distributed Authoring and Versioning) is an IIS module that intercepts PUT, DELETE, and other HTTP verbs to provide file-system-like operations over HTTP. When enabled, it blocks these verbs from reaching your ASP.NET Web API application, causing 405 errors.
Step-by-Step: Remove WebDAV from IIS
Remove WebDAV from Modules and from Handler Mappings in IIS

Example: IIS Home screen for module and handler management.
Remove from Modules

Example: Removing WebDAV from IIS Modules.
- Open IIS Manager
- Select your site (e.g., Default Web Site) or application (e.g., Nodinite/WebClient)
- Double-click Modules
- Locate WebDAVModule in the list
- Right-click → Remove
- Click Yes to confirm
Remove from Handler Mappings

Example: Removing WebDAV from IIS Handler Mappings.
- In IIS Manager, navigate to the same site/application
- Double-click Handler Mappings
- Locate WebDAV in the list
- Right-click → Remove
- Click Yes to confirm
Note
Restart IIS or recycle the Application Pool after this operation:
# Recycle specific application pool Restart-WebAppPool -Name "NodiniteAppPool" # Or restart IIS completely iisreset
Verify web.config Exclusions
The web.config file for WebAPI and WebClient should include the following exclusions:
<system.webServer>
<modules runAllManagedModulesForAllRequests="true">
<remove name="WebDAVModule" />
</modules>
<handlers>
<remove name="WebDAV" />
<remove name="OPTIONSVerbHandler" />
<remove name="TRACEVerbHandler" />
<remove name="ExtensionlessUrlHandler-Integrated-4.0" />
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
<remove name="BlockViewHandler" />
<add name="BlockViewHandler" path="*" verb="Views/*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" />
</handlers>
</system.webServer>
Note
The system.webServer example is partial. Your web.config will contain additional sections.
Solution 2: Check Request Filtering
If removing WebDAV doesn't resolve the issue, check IIS Request Filtering settings:
Step 1: Review HTTP Verbs in Request Filtering
Open IIS Manager
Select your Nodinite application
Double-click Request Filtering
Click HTTP Verbs tab
Ensure the following verbs are allowed (not explicitly denied):
- GET
- POST
- PUT
- DELETE
- PATCH
- OPTIONS
Step 2: Verify web.config Request Filtering
Your web.config should not include overly restrictive verb filtering:
<system.webServer>
<security>
<requestFiltering>
<!-- Ensure verbs are not explicitly denied -->
<verbs allowUnlisted="true">
<!-- No <remove> or <add verb="..." allowed="false" /> for PUT, DELETE, PATCH -->
</verbs>
</requestFiltering>
</security>
</system.webServer>
Tip
Set
allowUnlisted="true"to permit all HTTP verbs by default, then only deny specific verbs if absolutely necessary for security.
Solution 3: Handler Mapping Configuration
If 405 errors persist, verify that the ExtensionlessUrlHandler is configured correctly:
Check Handler Mapping in IIS
Open IIS Manager → Navigate to your Nodinite application
Double-click Handler Mappings
Locate ExtensionlessUrlHandler-Integrated-4.0
Right-click → Edit
Verify Request restrictions:
- Verbs: Should be empty (all verbs) or explicitly list:
GET,POST,PUT,DELETE,PATCH,OPTIONS - Access: Script
- Verbs: Should be empty (all verbs) or explicitly list:
Example web.config Handler Configuration
<system.webServer>
<handlers>
<remove name="ExtensionlessUrlHandler-Integrated-4.0" />
<add name="ExtensionlessUrlHandler-Integrated-4.0"
path="*."
verb="GET,POST,PUT,DELETE,PATCH,OPTIONS,HEAD"
type="System.Web.Handlers.TransferRequestHandler"
preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>
</system.webServer>
Solution 4: Application Pool Configuration
Ensure the Application Pool is configured correctly for .NET applications:
Verify Application Pool Settings
Open IIS Manager
Click Application Pools in the left pane
Locate your Nodinite Application Pool (e.g., NodiniteAppPool)
Right-click → Advanced Settings
Verify:
- .NET CLR Version: v4.0 (or higher)
- Managed Pipeline Mode: Integrated
- Enable 32-Bit Applications: False (unless specifically required)
- Identity: NetworkService or custom service account with appropriate permissions
Recycle Application Pool
After making changes, recycle the Application Pool:
# PowerShell
Restart-WebAppPool -Name "NodiniteAppPool"
Or via IIS Manager:
- Right-click the Application Pool → Recycle
Solution 5: CORS and Preflight Requests
If 405 errors occur with OPTIONS requests (CORS preflight), configure CORS in web.config:
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Methods" value="GET,POST,PUT,DELETE,PATCH,OPTIONS" />
<add name="Access-Control-Allow-Headers" value="Content-Type,Authorization" />
</customHeaders>
</httpProtocol>
</system.webServer>
Warning
Using
Access-Control-Allow-Origin: *allows requests from any domain. For production, specify exact origins:value="https://yournodiniteserver.com"
Troubleshooting Checklist
Before contacting support, verify:
- ✅ WebDAV removed from IIS Modules and Handler Mappings
- ✅ Application Pool recycled after configuration changes
- ✅ web.config includes WebDAV exclusions (
<remove name="WebDAVModule" />) - ✅ Request Filtering allows PUT, DELETE, PATCH verbs
- ✅ ExtensionlessUrlHandler configured for all required verbs
- ✅ Application Pool in Integrated mode with .NET CLR v4.0+
- ✅ No antivirus/firewall blocking HTTP verbs
- ✅ Failed Request Tracing enabled for detailed diagnostics
Testing Your Fix
After applying solutions, test with PowerShell:
Test PUT Request
# Replace with your Nodinite WebAPI endpoint
$uri = "https://yourserver/Nodinite/WebAPI/api/monitorviews/1"
$body = @{ Name = "Test" } | ConvertTo-Json
$headers = @{ "Content-Type" = "application/json" }
Invoke-RestMethod -Uri $uri -Method PUT -Body $body -Headers $headers
Test DELETE Request
$uri = "https://yourserver/Nodinite/WebAPI/api/alarms/123"
Invoke-RestMethod -Uri $uri -Method DELETE
Expected: HTTP 200 OK (or 204 No Content for DELETE)
Error: HTTP 405 indicates the issue persists
Security Considerations
After enabling PUT/DELETE verbs:
- Enable Authentication - Require Windows Authentication or API keys for WebAPI
- Use HTTPS - Encrypt all traffic to prevent man-in-the-middle attacks
- Restrict IP addresses - Use IIS IP Address and Domain Restrictions to limit access
- Audit changes - Enable Nodinite audit logging to track modifications
Example web.config security configuration:
<system.webServer>
<security>
<requestFiltering>
<!-- Block potentially dangerous verbs if not needed -->
<verbs allowUnlisted="true">
<add verb="TRACE" allowed="false" />
<add verb="TRACK" allowed="false" />
</verbs>
</requestFiltering>
</security>
</system.webServer>
Still Getting 405 Errors?
If none of the above solutions work:
- Check Antivirus/Firewall - Some security software blocks PUT/DELETE requests
- Review Reverse Proxy - If using a reverse proxy (nginx, HAProxy), verify it forwards all HTTP verbs
- Check Load Balancer - Azure Application Gateway or F5 may filter verbs
- IIS Rewrite Rules - Custom URL rewrite rules may interfere with verbs
- Check Application Code - Ensure Web API controllers support the HTTP verb:
[HttpPut] // Attribute must match the HTTP verb public IHttpActionResult UpdateMonitorView(int id, MonitorView view) { // Implementation }
Contact Nodinite Support with:
- Failed Request Trace logs
- web.config file (sanitize sensitive data)
- IIS Module and Handler Mapping screenshots
- Browser Network tab HAR export (F12 → Network → Right-click → Save as HAR)