编辑:摘要:似乎我的网络应用程序可以被任何人(只有Firefox或Chrome)和我使用我的主计算机访问.如果我尝试从我的任何其他LAN 访问http://luiscarlosch.com/WebFormClean.aspx它会收到405错误
我可以从localhost完美地调用WCF Web方法.我发布到这个服务器:http://luiscarlosch.com/WebFormClean.aspx(只有firefox或chrome)与Visual Studio发布工具,它工作正常.问题是当尝试从另一台计算机访问它时.我得到405:方法不允许.但它确实有意义,因为当我从发布者计算机远程访问它时它工作正常,正如我所说.任何的想法?
[ServiceContract(Namespace = "")]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class ContactProxy
{
[WebGet()]
[OperationContract]
public Contact getByID(int IDContact)
{
Contact contact = new Contact(IDContact);
return contact;
}
[OperationContract]
public EntityData insertEntityData(int IDEntityDataFieldType, int IDContact, String value)
{
//Contact contact = new Contact();
// contact.insertEntityData(IDEntityDataFieldType, IDContact, value);
EntityData entityData = new EntityData();
entityData.save(IDEntityDataFieldType, IDContact, value);
return entityData;
}
}
Run Code Online (Sandbox Code Playgroud)
这两种方法似乎都不起作用.
我刚刚注意到一些用户能够访问http://luiscarlosch.com/WebFormClean.aspx,因为他们更改了值.所以.一些客户可以阅读方法,但有些不能.这应该发生了.
Web配置
<?xml version="1.0"?>
<configuration>
<configSections>
</configSections>
<connectionStrings>
<add name="ApplicationServices" …Run Code Online (Sandbox Code Playgroud) 我搜索了与类似问题相关的大量不同的现有SO问题,但我找不到与我的问题相关的任何内容.
我有以下jQuery代码:
$.ajax({
url: "Index.aspx/DeclineRequest"
, type: 'POST'
, contentType: 'application/json; charset=utf-8'
, dataType: 'json'
, data: JSON.stringify({ RequestId: requestId })
});
Run Code Online (Sandbox Code Playgroud)
我正在使用一种非常类似的技术在另一个ASP.NET Web应用程序上POST数据,这很好用.但是,此应用程序返回以下错误:
"NetworkError:405方法不允许 - http:// localhost:57255 / ....."
我找不到这两个应用程序的任何不同,所以我很困惑为什么这不起作用.
我能想到的这两个应用程序之间的唯一区别是,正在运行的应用程序是.NET 2.0,而无法运行的应用程序是.NET 3.5.
我已经尝试将以下内容添加到我的中web.config,但我仍然得到相同的405错误:
<webServices>
<protocols>
<add name="HttpPost"/>
<add name="HttpPostLocalhost"/>
</protocols>
</webServices>
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个问题?
更新(16:40):我已将此应用程序移动到IIS,并且不再返回405错误.但是,我们的开发环境只是localhost.为什么这只会在localhost上出错?
下面的代码来自一本书,所以它不会出错.但我不知道如何解决这个错误.当删除方法doGet()时,同样的错误!
"HTTP状态405 - 此URL不支持HTTP方法GET"
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class PDFServlet extends HttpServlet{
private static final long serialVersionUID = 1L;
@Override
protected void doGet(HttpServletRequest request,HttpServletResponse response)
throws IOException,ServletException{
this.doPost(request,response);
}
@Override
protected void doPost(HttpServletRequest request,HttpServletResponse response)
throws IOException,ServletException{
response.setContentType("application/pdf");
ServletOutputStream out=response.getOutputStream();
File pdf=null;
BufferedInputStream buf=null;
try{
pdf=new File("C:\\Users\\lk\\Desktop\\Desktop\\ example.pdf");
response.setContentLength((int)pdf.length());
FileInputStream input=new FileInputStream(pdf);
buf=new BufferedInputStream(input);
int readBytes=0;
while((readBytes=buf.read())!=-1) out.write(readBytes);
}catch(IOException e){
System.out.println("file not found!");
}finally{
if(out!=null) …Run Code Online (Sandbox Code Playgroud) 我意识到点击Backbone.Todos示例"清除x已完成的项目"我得到DELETE 405不允许...
我从以前的帮助和文档中了解到,如果我想启用DELETE PUT PATCH ...我需要设置
X-http-method-override : DELETE
如果它是一个表格或jquery.
但我不确定如何在Backbone.Todos示例中完成此操作,因为我是backbone.js的新手.
你能指出如何修复DELETE 405吗?谢谢.
编辑---------------------------------------
我总是可以改变路线......
[Route("/todos/add")] //C - post
[Route("/todos/{id}")] //R - get
[Route("/todos/{id}/edit")] //U - post
[Route("/todos/{id}/delete")] //D - post
Run Code Online (Sandbox Code Playgroud)
所以,只有Post和Get足以完成这项工作.但与以下相比,它看起来并不十分宁静:
[Route("/todos/{id}", "Delete")] //D - delete
Run Code Online (Sandbox Code Playgroud)
可以?
我有S3的以下CORS配置,以便使用我的一个桶作为静态网站托管:
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<AllowedMethod>POST</AllowedMethod>
<MaxAgeSeconds>3000</MaxAgeSeconds>
</CORSRule>
</CORSConfiguration>
Run Code Online (Sandbox Code Playgroud)
然后我有以下编辑重定向规则:
<RoutingRules>
<RoutingRule>
<Condition>
<KeyPrefixEquals>abc</KeyPrefixEquals>
</Condition>
<Redirect>
<HostName>myec2instance.com</HostName>
</Redirect>
</RoutingRule>
Run Code Online (Sandbox Code Playgroud)
我想要做的是当S3收到POST/abc将请求和请求主体重定向到我的ec2实例时.重定向规则工作正常(我能够通过将POST切换到GET请求来测试它)但是由于任何原因,S3在请求是POST时返回HTTPResponse 405.有什么想法吗?
http-post amazon-s3 amazon-ec2 amazon-web-services http-status-code-405
我正在尝试使用Microsoft Bot Framework和一个简单的Q/A场景.我按照" 连接器入门"页面上的步骤进行操作.但是,在我注册我的机器人并上传它之后,当我在机器人框架网站上测试它时,我得到一个方法不允许的错误.我可以在模拟器中运行机器人就好了.我知道这是一个405错误,但我不明白的是它试图做什么.有人知道吗?
我一直在创建一个WebApi控制器,我正在尝试使用HttpPost请求提交新用户进行注册.这在我的localhost上工作正常,但是当我将它发布到Azure时,我得到一个405方法不允许错误消息:"请求的资源不支持http方法'GET'".
我使用邮递员来检查操作,所以我使用生成代码来查看请求,如下所示:
POST /api/account/register/student HTTP/1.1
Host: www.l3cture.com
Content-Type: application/json
Cache-Control: no-cache
Postman-Token: 27c1b2ab-96ad-4a99-b271-4030402768e7
Run Code Online (Sandbox Code Playgroud)
所以我可以清楚地看到请求是POST.以下是具有其属性的控制器动作代码(我目前已对其进行了简化,因此不会发布任何模型,并且会发生相同的行为)
[HttpPost]
[Route("register/student")]
[AllowAnonymous]
public async Task<IHttpActionResult> PostStudent(/*RegisterStudent model*/)
{
//Implementation of register
return Ok();
}
Run Code Online (Sandbox Code Playgroud)
我已经检查了属性的命名空间,它是System.Web.Http,因此它不会与MVC命名空间混淆.
有趣的是,当我将方法更改为HttpGet,并使用postman对其进行POST时,我收到状态200.这几乎就像HttpPost请求被我的控制器一样对待HttpGet.
我在其他地方使用过HttpPut和HttpDelete,它们都运行良好.
我不确定如何解决这个问题,并且想知道是否有人有任何想法?如果我需要发布更多代码以便澄清,请告诉我.
提前致谢
c# http-method http-status-code-405 asp.net-mvc-4 asp.net-web-api2
我需要向 .NET core 3.1 API 添加 CORS 支持(是 2.2,但我决定同时更新)。我以为这会很容易。这里的文档: https: //learn.microsoft.com/en-us/aspnet/core/security/cors ?view=aspnetcore-3.1 看起来很简单。我希望在所有端点上支持相同的 CORS 策略。所以,我想我可以不理会我的控制器,只对startup.cs 进行更改。我缺少什么?
我有一个 POST 端点,但 OPTIONS 请求返回 405 错误。我认为 CORS 中间件应该处理请求,这样我就不必在控制器内部考虑 CORS。
启动.cs
namespace MyAPI
{
public class Startup
{
readonly String ALLOW_ALL = "AllowAll";
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
// services.Configure<IISOptions>(options =>
// { …Run Code Online (Sandbox Code Playgroud) 我有我的 json 数据,我需要将其发布到 url 或仅更新我的站点 url 之一中的 json 数据。但我收到 405 错误。这是我的代码。
$.post("details", {name: "John", location: "us"});
Run Code Online (Sandbox Code Playgroud) 我正在尝试为大学的在线实验建立一个网站。为此,我在几个月前接触了 MERN 堆栈,并且或多或少在本地完成了该网站。现在,每当我通过 Vercel 切换到生产版本时,与数据库的后端连接都会抛出405 错误。
使用之前版本的官方文档,我能够启动相同的连接,但除 Chrome 之外的任何浏览器都不允许我获取数据。因此,我将整个后端从 YouTube 教程更改为这个 GitHub 存储库。该解决方案在开发版本中再次完美运行,但在生产中却失败了。经过一些调试后,我发现问题出在我传递的.post(URL)中(在 /src/Pages/Home1.js 中):
import axios from "axios";
(...)
axios
.post("/api/participants", passvalue)
.then(() => {
console.log("new participant added with AXIOS");
})
.catch((e) => {
console.log("Unable to add with AXIOS: ", e);
});
(...)
Run Code Online (Sandbox Code Playgroud)
在本地构建中,完整的 URL 是在我的.envhttp://localhost:5001/api/participants文件中定义 PORT 5001 的位置。默认情况下,此 URL 应创建GET请求并根据我的路由(/server/routes/participants.js) 列出所有虚拟 mongodb 条目:
const express = require("express");
const router = express.Router();
const …Run Code Online (Sandbox Code Playgroud) c# ×3
.net ×1
.net-core ×1
ajax ×1
amazon-ec2 ×1
amazon-s3 ×1
asp.net ×1
backbone.js ×1
backend ×1
botframework ×1
cors ×1
http-get ×1
http-method ×1
http-post ×1
javascript ×1
jquery ×1
json ×1
mern ×1
post ×1
reactjs ×1
servicestack ×1
servlets ×1
vercel ×1
wcf ×1
webmethod ×1