2012-04-19 3 views
0

У меня есть C# приложение и следующий отрывок из моего файла Web.config:Запросы работают в режиме отладки, но не в режиме развертывания?

<connectionStrings> 
    <add name="MyDB" connectionString="Data Source=MACHINENAME\\SQLEXPRESS;Initial Catalog=DBName;Integrated Security=True;MultipleActiveResultSets=true" providerName="System.Data.SqlClient"/> 
    </connectionStrings> 
    <system.web> 
    <authentication mode="Windows" /> 
    <identity impersonate="false" /> 
    </system.web> 

В самом коде, у меня есть запрос, как это:

[WebMethod] 
public string InsertField(string str1, string str2, string str3) 
{ 

    string sql = @" 
      UPDATE DBNAME.dbo.TableName SET Field2 = '{2}', Modified_At=GETDATE() WHERE Field1 = '{0}' AND Field2 = '{1}'; 

      IF @@ROWCOUNT = 0 
       INSERT INTO DBNAME.dbo.TableName (Field1, Field2, Field3, Modified_At) 
       VALUES('{0}', '{1}', '{2}', GETDATE()) 
      "; 

    sql = String.Format(sql, str1, str2, str3); 

    try 
    { 
      string ConString = Constants.connString; 
      con = new SqlConnection(ConString); 

      cmd = new SqlCommand(sql, con); 
      con.Open(); 
      cmd.ExecuteNonQuery(); 
      return "Success"; 
    } 
    catch (Exception x) 
    { 
      return x.Message; 
      //Response.Write(x); 
    } 

} 

Мои работы с веб-приложений отлично, когда я отлаживаю его, но когда я его публикую, запросы терпят неудачу. Отладка с помощью Firebug дает следующую ошибку:

{ 
    "d": "The UPDATE permission was denied on the object "TableName", database "DBName", schema "dbo".\r\nThe INSERT permission was denied on the object "TableName", database "DBName", schema "dbo"." 
} 

Любые предложения по тому, как я могу это исправить?

ответ

2

Да, это довольно очевидная ошибка. Вы должны убедиться, что любая учетная запись вашего веб-сайта будет запущена, так как должна иметь доступ к обновлению/вставке данной таблицы.

Поскольку пользователь, похоже, не настроен в строке соединения. Он будет использовать то, что работает веб-метод. Итак, find out what that account is и grant соответствующие пермы. Он работал в разработке, потому что он, вероятно, работал под вашей учетной записью, что, вероятно, имело полный доступ к вашей базе данных разработчиков.

+0

+1 Спасибо. Отличный ответ! – Legend

1

У пользователя нет достаточных привилегий для выполнения обновления в вашей среде prod. Вы должны предоставить разрешение на обновление для пользователя, которого используете, как

+0

+1 Благодарим вас за ответ. – Legend

Смежные вопросы