我开始使用MVC4 Web API项目,我有多种HttpPost
方法的控制器.控制器如下所示:
调节器
public class VTRoutingController : ApiController
{
[HttpPost]
public MyResult Route(MyRequestTemplate routingRequestTemplate)
{
return null;
}
[HttpPost]
public MyResult TSPRoute(MyRequestTemplate routingRequestTemplate)
{
return null;
}
}
Run Code Online (Sandbox Code Playgroud)
这里MyRequestTemplate
表示负责处理通过请求的Json的模板类.
错误:
当我让使用招为请求http://localhost:52370/api/VTRouting/TSPRoute
或http://localhost:52370/api/VTRouting/Route
我得到一个错误:
找到了与请求匹配的多个操作
如果我删除上述方法之一,它工作正常.
Global.asax中
我已经尝试修改默认路由表global.asax
,但我仍然收到错误,我认为我在global.asax中定义路由时遇到问题.这是我在global.asax中所做的.
public static void RegisterRoutes(RouteCollection routes)
{
routes.MapHttpRoute(
name: "MyTSPRoute",
routeTemplate: "api/VTRouting/TSPRoute",
defaults: new { }
);
routes.MapHttpRoute(
name: "MyRoute",
routeTemplate: "api/VTRouting/Route",
defaults: new { action="Route" }
);
}
Run Code Online (Sandbox Code Playgroud)
我正在使用POST在Fiddler中发出请求,在RequestBody中为MyRequestTemplate传递json.
我需要用来Server.MapPath()
组合我存储在的一些文件路径web.config
.
但是,由于Server.MapPath()
依赖于当前的HttpContext(我认为),我无法做到这一点.在尝试使用该方法时,即使它"可用",我也会遇到以下异常:
在此上下文中无法使用服务器操作.
是否有另一种方法可以将Web根目录相对目录映射~/App_Data/
到完整的物理路径,例如C:\inetpub\wwwroot\project\App_data\
?
在我的.Net 2.0 Asp.net WebForms应用程序中,我的Global.asax包含以下代码:
<%@ Application CodeBehind="Global.asax.cs" Inherits="MyNamespace.Global" Language="C#" %>
Run Code Online (Sandbox Code Playgroud)
但是当我构建时,我得到一个错误陈述 -
无法加载"MyNamespace.Global"类型.
这似乎是因为Global.asax文件中的编译器没有看到MyNamespace命名空间(在文件Global.asax.cs后面的代码中定义)(在R#intellisence中没有显示..).事实证明这是一个非常难以破解...任何帮助将不胜感激!
注意:Global.asax和Global.asax.cs位于同一文件夹中.
注意2:使用csc从vs提示符编译时,编译正常
我想知道在什么情况下我应该在我的文件中将应用程序初始化代码放入Application_Start()
vs ?Init()
Global.asax
两者之间的区别对我来说似乎并不是很明显,除了Application_start
首先被调用之外Init()
.
到目前为止,我能找到的唯一真正的指针是IHttpModule
只有一个Init()
方法,所以如果我正在做的事情在某些时候可能更适合实现IHttpModule
我应该使用Init()
方法Global.asax
,如果没有别的一致性.
我无法调试global.asax文件!
我在Application_Start()
方法中有一些代码,但是当我在方法中设置断点时,它会被忽略!
这是正常的吗?
我正在使用VS 2008.我已经从File-> New-> Website-> Asp.net Website创建了一个新的Asp.net网站项目.
现在我想将Global.asax和.cs文件添加到项目中.所以我右键单击项目 - >添加新项目 - >全局应用程序类.然后我点击了添加按钮.
Global.asax文件添加了内容,如下
<%@ Application Language="C#" %>
<script runat="server"%>
void Application_Start(object sender, EventArgs e)
{
// Code that runs on application startup
}
void Application_End(object sender, EventArgs e)
{
// Code that runs on application shutdown
}
void Application_Error(object sender, EventArgs e)
{
// Code that runs when an unhandled error occurs
}
void Session_Start(object sender, EventArgs e)
{
// Code that runs when a new session is started
}
void …
Run Code Online (Sandbox Code Playgroud) 我从asp.net-mvc项目的global.aspx.cs中看到
protected void Application_BeginRequest()
{
}
Run Code Online (Sandbox Code Playgroud)
但是当我尝试将其添加到我的项目中时,我看不出是什么叫这个方法.我看到基础System.Web.HttpApplication有这个事件,但我没有看到任何覆盖它或订阅此事件.
有人可以解释你如何在asp.net-mvc中连接Application_BeginRequest?
在应用程序的生命周期中触发Application_End时,有人可以告诉我吗?当所有会话结束时,Application_End会自动触发吗?+还有其他原因可以触发Application_End吗?
我正在将ASP.NET MVC代码添加到预先存在的ASP.NET Webforms项目中.的各种教程建议增加路由到从的Application_Start()在Global.asax中调用的方法.我的Global.asax已经有一个带有一些设置代码的Application_OnStart(Object,EventArgs)方法.
如果我尝试同时使用Start和OnStart,则不会调用OnStart(并且安装失败,导致错误).看起来我必须选择其中一个.
我的问题是:我应该使用哪一个?他们之间有什么区别?他们在不同的时间被召唤?
我正在使用ASP.NET MVC,我需要设置一个会话变量Application_BeginRequest
.问题是,此时对象HttpContext.Current.Session
始终是null
.
protected void Application_BeginRequest(Object sender, EventArgs e)
{
if (HttpContext.Current.Session != null)
{
//this code is never executed, current session is always null
HttpContext.Current.Session.Add("__MySessionVariable", new object());
}
}
Run Code Online (Sandbox Code Playgroud) global-asax ×10
asp.net ×8
c# ×5
asp.net-mvc ×3
.net ×1
iis ×1
lifecycle ×1
namespaces ×1
webforms ×1