我有一个基本的ASP .NET WebAPI项目。有一个PdfFileController
:ASP .NET WebAPI无法访问路线
[RoutePrefix("api/pdffile")]
public class PdfFileController : ApiController
{
[HttpPost]
[Route("upload")]
public async Task<dynamic> Upload(dynamic uploadedData)
{
List<object> files = uploadedData.pdfs;
// ...
}
}
而且在客户端上我有使用Oboe POST请求:
oboe({
url: this.props.configuration.rootApiUrl + 'pdffile/upload',
method: 'POST',
body: { pdfs: pdfs }
}).node('pdfsAsImages.*', function(pdf){ // This callback will be called every time a new pdf image comes in
channel.pub('pdf.converted', pdf);
});
POST请求的URL解析为http://localhost:49706/api/pdffile/upload。从这个请求,收到此消息:
OPTIONS http://localhost:49706/api/pdffile/upload
的XMLHttpRequest不能加载http://localhost:49706/api/pdffile/upload。 对预检请求的响应未通过访问控制检查:否 请求的 资源上存在“访问控制 - 允许来源”标头。因此不允许原产地'null'访问。响应 了HTTP状态码405
我的静态HTML和JS文件被从本地简单的python文件服务器提供的位于localhost:8000。
击中http://localhost:49706/api/pdffile/upload与邮差返回此:
{ “消息”:“请求实体的媒体类型‘多部分/格式数据’不支持该资源。”, “ExceptionMessage”: “没有MediaTypeFormatter可用于从媒体类型为'multipart/form-data'的内容读取'Object'类型的对象。”, “ExceptionType”:“System.Net.Http.UnsupportedMediaTypeException”, “StackTrace”:“在System.Net.Http.HttpContentExtensions.ReadAsAsync [T](HttpContent内容,类型类型,IEnumerable`1格式化程序,IFormatterLogger formatterLogger,CancellationToken的CancellationToken个)\ r \ n在System.Web.Http.ModelBinding.FormatterParameterBinding.ReadContentAsync(HttpRequestMessage请求,类型类型,IEnumerable`1格式化,IFormatterLogger formatterLogger,的CancellationToken的CancellationToken)” }
所以可能有几个这里发生的问题。我的问题是我必须做些什么来克服“否”访问控制 - 允许来源'标题存在'的问题?在我看来,它与多个服务器有关,一个用于静态文件服务,另一个用于路由。我想保持这个设置。
您可能希望在服务器应用程序上启用[启用CORS](http://www.asp.net/web-api/overview/security/enabling-cross-origin-requests-in-web-api)。 –