我越來越想調用下面的方法有以下網址網頁API 2 404錯誤
[HttpGet]
[Route("api/Trinity/GetDirectoryAndTask/{modelTemplateId}/{taskName}")]
public KeyValuePair<string, string> GetDirectoriesAndTasks(int modelTemplateId, string taskName)
http://localhost:46789/api/Trinity/GetDirectoryAndTask/9/Tax+H%3a+AG43SS+GMIB%3b+no+fpws%3b+d%26r
此網址時404錯誤來自於呼叫HttpUtility.UrlEncode()字符串「Tax H:AG43SS GMIB; no fpws; d & r」。如果還有其他方法可以完成傳遞這個字符串,我也會接受。如果我把它稱爲第i一個「簡單」的任務名稱,像這樣
http://localhost:46789/api/Trinity/GetDirectoryAndTask/9/Roth
的方法工作正常我安裝了RouteDebugger NuGet包,但它不是非常有幫助。爲了完整這裏是我的WebApiConfig.cs文件
using System.Web.Http;
namespace DbService
{
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API routes
MapRoutes(config);
}
private static void MapRoutes(HttpConfiguration config)
{
config.MapHttpAttributeRoutes();
//config.Routes.MapHttpRoute(
// name: "DefaultApi",
// routeTemplate: "api/{controller}/{id}",
// defaults: new { id = RouteParameter.Optional }
//);
}
}
}
和RouteConfig.cs文件
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Routing;
namespace DbService
{
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
}
}
它適用於該任務名稱,但現在失敗的任務名稱「AG33/34」,我應該問一個新問題或編輯這個問題? – reggaeguitar
它會返回一個不同的錯誤,如果使用合適的URL編碼,則不會收到該錯誤。您應該使用%2F而不是/。像%3a和%3b和... –
我使用HttpUtility.UrlEncode,它爲「AG33/34」返回「AG33%2f34」,現在我收到此異常「沒有MediaTypeFormatter可用於讀取從媒體類型爲'text/html'的內容鍵入'KeyValuePair'2'。「 – reggaeguitar