相关疑难解决方法(0)

IIS 7.5 +为RESTFul服务启用PUT和DELETE,无扩展

我试图了解IIS 7.5如何处理POST和PUT请求.

我正在使用OpenRasta框架编写RESTful服务.POST操作没有任何问题,但相同URL的PUT操作不会.它返回如下错误

Detailed Error Information
Module: IIS Web Core
Notification: MapRequestHandler
Handler: StaticFile
Error Code: 0x80070002
Run Code Online (Sandbox Code Playgroud)

网址如下"http://localhost/MyService/Resource.Something.manifest"

相同的设置在Visual Studio开发IIS中工作正常.

基本上默认的ExtensionlessUrlHandler不接受PUT和DELETE动词.只需要添加它们.

<add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE" modules="IsapiModule" scriptProcessor="C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" resourceType="Unspecified" requireAccess="Script" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
Run Code Online (Sandbox Code Playgroud)

iis put openrasta

55
推荐指数
8
解决办法
9万
查看次数

处理对ASP.NET MVC操作的CORS预检请求

我正在尝试对ASP.NET MVC控制器操作执行跨域POST请求.此控制器操作接受并使用各种参数.问题是,当预检请求发生时,控制器操作实际上会尝试执行,因为OPTIONS请求没有传递任何数据,控制器操作会抛出500 HTTP错误.如果我删除使用该参数的代码或参数本身,则整个请求链成功完成.

这是如何实现的一个例子:

控制器动作

public ActionResult GetData(string data)
{
    return new JsonResult
    {
        Data = data.ToUpper(),
        JsonRequestBehavior = JsonRequestBehavior.AllowGet
    };
}
Run Code Online (Sandbox Code Playgroud)

客户端代码

<script type="text/javascript">
        $(function () {
            $("#button-request").click(function () {
                var ajaxConfig = {
                    dataType: "json",
                    url: "http://localhost:8100/host/getdata",
                    contentType: 'application/json',
                    data: JSON.stringify({ data: "A string of data" }),
                    type: "POST",
                    success: function (result) {
                        alert(result);
                    },
                    error: function (jqXHR, textStatus, errorThrown) {
                        alert('Error: Status: ' + textStatus + ', Message: ' + errorThrown);
                    }
                };

                $.ajax(ajaxConfig);
            });
        });
    </script> …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc cors

50
推荐指数
4
解决办法
4万
查看次数

IIS劫持了CORS Preflight OPTIONS请求

我正在进行CORS POST请求并将Content-Type标头设置为json.这会触发Preflight OPTIONS请求触发(这很好并且预期)

此OPTIONS请求以200 OK响应,但这不是来自我的WebAPI应用程序.

我有一个自定义的消息处理程序,它永远不会受到影响,因此在看到ASP.NET之前,IIS会响应请求.

我找到了几个关于这个主题的帖子,他们说了以下内容

  1. 确保卸载/删除/禁用WebDav - 完成

  2. 确保删除/更改OPTIONSVerbHandler以使用aspnet_isapi.dll - 同时尝试

  3. 确保extensionlessURLHandler包含OPTIONS动词 - DONE

但是,我的选项请求仍然被劫持.我的意思是,IIS以200 OK响应,但在响应中不包括Access-Control-Allow-Origin标头.它不包括此标头,因为它永远不会到我设置此标头的WebAPI CORS代码.

我能找到的两个最好的帖子听起来像是我的问题

这里:JQuery坚持CORS预检和IIS幽灵响应

在这里:http://brockallen.com/2012/10/18/cors-iis-and-webdav/

我尝试在IIS中打开失败请求跟踪(FERB)并将其设置为跟踪所有200个状态代码.我没有看到选项请求被记录...不确定这是否意味着FERB不跟踪OPTIONS请求或者我是否需要更改FERB设置中的某些内容以使其跟踪OPTIONS请求,或者如果这是一条线索我的问题是什么?

这是在IIS 7.5上运行的ASP.NET WebAPI 2.0(也在IIS 8和IISExpress上测试,结果相同)无论什么浏览器(Chrome,FF和IE都以相同的方式失败)

我已经尝试了我能找到的关于这个主题的所有内容,仍然无法解决我的问题.

帮帮我StackOverflow,你是我唯一的希望.

iis asp.net-mvc cors asp.net-web-api

43
推荐指数
5
解决办法
5万
查看次数

标签 统计

asp.net-mvc ×2

cors ×2

iis ×2

asp.net-web-api ×1

openrasta ×1

put ×1