У меня есть ELMAH, работающий на моем сервере разработки (Cassini), и я был им вполне доволен, но теперь, когда я пытаюсь перенести все на свой рабочий сервер (IIS7), медовый месяц кажется законченным.
Я прошел мимо " gotcha "с IIS7, который, честно говоря, можно было бы лучше выделить в документации, и если я просто использую журнал в памяти, он работает.
Однако я пытаюсь заставить его использовать журнал SQL Server (как я это делаю в своей системе разработки), и я получаю сообщение об ошибке в следующих строках:
В разрешении EXECUTE было отказано в объекте ELMAH_GetErrorsXml.
Вот и славно. Я знаю, как предоставить разрешения для базы данных, но мне очень трудно понять, какому пользователю и к каким сохраненным процессам / таблицам мне нужно предоставить доступ.
Что меня действительно сбивает с толку, так это то, что мне не нужно было делать ничего подобного, чтобы заставить его работать на моем сервере разработки. Единственное различие, которое я вижу, заключается в том, что на моем сервере разработки он, кажется, подключается как NT AUTHORITY \ IUSR, тогда как на моем производственном сервере он, похоже, подключается как NT AUTHORITY \ NETWORK SERVICE. (Он просто использует доверенное соединение, поэтому я явно не настроил его для этого - я предполагаю, что это связано с веб-сервером). ОБНОВЛЕНИЕ: с тех пор я установил, что, поскольку я использую Cassini, он на самом деле входил в систему как я (администратор), а не IUSR, что объясняет, почему у меня не было проблем с разрешениями.
На моем сервере разработки учетная запись IUSR является членом роли общедоступной базы данных и имеет доступ к необходимой базе данных (опять же как «общедоступная»). Нет явного предоставления разрешений на уровне объекта. [См. Обновление выше - это не имеет значения].
На своем производственном сервере я добавил СЕТЕВОЙ СЕРВИС точно таким же образом (роль общедоступной базы данных, явный доступ к базе данных как "общедоступный"). Тем не менее, я получаю эту ошибку разрешения. Почему?!! [См. Обновление выше - единственная причина, по которой я не получаю сообщение об ошибке разрешения, - это то, что я работаю как администратор].
И, конечно, если тот факт, что он работает локально, - это просто «удача», мне нужно будет знать, к каким SP / таблицам предоставить доступ. Я предполагаю, что это все 3 SP, а не таблица, но было бы хорошо (снова) увидеть некоторую документацию, которая делает это явным.