相关疑难解决方法(0)

<modules runAllManagedModulesForAllRequests ="true"/>含义

我想知道是什么意思

<modules runAllManagedModulesForAllRequests="true" />
Run Code Online (Sandbox Code Playgroud)

我使用的是IIS 7.5,我有一个简单的Web应用程序.我是否需要在web.config文件中编写此代码.我还为jquery ajax调用编写了几个http处理程序.我正在使用表单身份验证和asp.net 4.0.

如何确定我必须运行哪个模块以及哪个模块不运行?

asp.net web-config

131
推荐指数
1
解决办法
14万
查看次数

带有电子邮件地址参数的WebApi方法从HttpClient返回404

我有一个WebApi控制器,其方法如下:

[HttpGet]
[AcceptVerbs("GET")]
public HttpResponseMessage Run(string reportName, int someId, string someText, DateTime asOfDate, string username)
Run Code Online (Sandbox Code Playgroud)

我有专门为此操作配置的自定义路由.当我将浏览器导航到Web服务时,一切正常,并执行相应的操作:

http://localhost:xxxx/ControllerName/Run/asdf/1/asdf/07-01-2012/user@domain.com
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试使用HttpClient以编程方式调用Web服务并执行"获取"时,我收到404错误.当username参数不是电子邮件地址时,我不会收到错误.例如,当用户名只是"用户"时,一切正常.以下是示例代码:

var url = "http://localhost:xxxx/ControllerName/Run/asdf/1/asdf/07-01-2012/user@domain.com"
var client = new System.Net.Http.HttpClient();
var response = client.Get(url);

//fails here with 404 error
response.EnsureSuccessStatusCode();
Run Code Online (Sandbox Code Playgroud)

我试过UrlEncoding电子邮件地址没有运气.任何建议表示赞赏.

c# asp.net asp.net-mvc-4 asp.net-web-api

31
推荐指数
2
解决办法
2万
查看次数

WebApi 2.0路由与查询参数不匹配?

我刚刚从AttributeRouting切换到WebApi 2.0 AttributeRouting,并且有一个控制器和动作定义如下:

public class InvitesController : ApiController
{
    [Route("~/api/invites/{email}")]
    [HttpGet]
    [ResponseType(typeof(string))]
    public IHttpActionResult InviteByEmail(string email)
    {
        return this.Ok(string.Empty);
    }
}
Run Code Online (Sandbox Code Playgroud)

示例查询:

GET: http://localhost/api/invites/test@foo.com
Run Code Online (Sandbox Code Playgroud)

我收到的响应是200,内容为空(由于string.Empty).


这一切都很好 - 但我想将email属性更改为查询参数.所以我将控制器更新为:

public class InvitesController : ApiController
{
    [Route("~/api/invites")]
    [HttpGet]
    [ResponseType(typeof(string))]
    public IHttpActionResult InviteByEmail(string email)
    {
        return this.Ok(string.Empty);
    }
}
Run Code Online (Sandbox Code Playgroud)

但现在在查询端点时:

GET: http://localhost/api/invites?email=test@foo.com
Run Code Online (Sandbox Code Playgroud)

我收到的回复是404:

{
"message": "No HTTP resource was found that matches the request URI 'http://localhost/api/invites?email=test@foo.com'.",
"messageDetail": "No route providing a controller name was found to match request URI 'http://localhost/api/invites?email=test@foo.com'"
}
Run Code Online (Sandbox Code Playgroud)

有人知道为什么它与参数交换到查询参数时的路由不匹配,而不是内联网址?


根据要求,WebApiConfig的定义如下: …

c# asp.net-web-api asp.net-web-api-routing

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