現在、ASP.Net MVC3 Web サイトを構築しており、ckeditor を wsywig として使用しています。Visual Studio からサーバーをデプロイするとすべてが完全に機能しますが、何らかの理由で IIS7.5 に Web サイトをセットアップすると、投稿されたファイルが null として返され続けます。
UploadController ファイルのコードは次のとおりです。
public ActionResult Upload(HttpPostedFileBase upload, string CKEditorFuncNum, string CKEditor, string langCode)
{
string fileName = upload.FileName;
string basePath = Server.MapPath("~/Uploads");
upload.SaveAs(basePath + "\\" + fileName);
return View();
}
HttpPostedFileBase のアップロードが null として受信され続けます。
ckeditor config.js ファイルのコードは次のとおりです。
CKEDITOR.editorConfig = function( config )
{
config.filebrowserBrowseUrl = "/Admin/Uploads/Browse";
config.filebrowserWindowWidth = 500;
config.filebrowserWindowHeight = 650;
config.filebrowserUploadUrl = "/Admin/Uploads/Upload";
};
スタック トレースは次のとおりです。
System.NullReferenceException: Object reference not set to an instance of an object.
at SOSWebCMS.Areas.Admin.Controllers.UploadsController.Upload(HttpPostedFileBase upload, String CKEditorFuncNum, String CKEditor, String langCode) in **C:\Documents\SOSWebCMS\Areas\Admin\Controllers\UploadsController.cs:line 31**
at lambda_method(Closure , ControllerBase , Object[] )
at System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase controller, Object[] parameters)
at System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters)
at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters)
at System.Web.Mvc.ControllerActionInvoker.<>c__DisplayClass15.<InvokeActionMethodWithFilters>b__12()
at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func`1 continuation)
at System.Web.Mvc.ControllerActionInvoker.<>c__DisplayClass15.<>c__DisplayClass17.<InvokeActionMethodWithFilters>b__14()
at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodWithFilters(ControllerContext controllerContext, IList`1 filters, ActionDescriptor actionDescriptor, IDictionary`2 parameters)
at System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName)
at System.Web.Mvc.Controller.ExecuteCore()
at System.Web.Mvc.ControllerBase.Execute(RequestContext requestContext)
at System.Web.Mvc.ControllerBase.System.Web.Mvc.IController.Execute(RequestContext requestContext)
at System.Web.Mvc.MvcHandler.<>c__DisplayClass6.<>c__DisplayClassb.<BeginProcessRequest>b__5()
at System.Web.Mvc.Async.AsyncResultWrapper.<>c__DisplayClass1.<MakeVoidDelegate>b__0()
at System.Web.Mvc.Async.AsyncResultWrapper.<>c__DisplayClass8`1.<BeginSynchronous>b__7(IAsyncResult _)
at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult`1.End()
at System.Web.Mvc.MvcHandler.<>c__DisplayClasse.<EndProcessRequest>b__d()
at System.Web.Mvc.SecurityUtil.<GetCallInAppTrustThunk>b__0(Action f)
at System.Web.Mvc.SecurityUtil.ProcessInApplicationTrust(Action action)
at System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult)
at System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult result)
at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
私が気づいたことの 1 つは、コントローラー アクションへのパスがローカル ホストへのパスであり、ライブ環境の正しいパスではないことです。ファイル内の正しい行を参照しているように見えることを考慮して、それが禁止されているかどうかはわかりません。
MachineName\IIS_IUSRS に適切なアクセス許可をすべて与えたので、アクセス許可の問題ではないことがわかりました。
他に何か投稿する必要がある場合は、お知らせください。